![](/img/trans.png)
[英]How to use DataSearch as controlled component from Reactivesearch?
[英]Reactivesearch - search from any route
我正在试验 ReactiveSearch 并使用 ReactiveList 组件。
我试图弄清楚如何在我的 React 应用程序中导航并仍然能够搜索。
假设我在主路线'/'
,使用 DataSearch 组件进行自动完成,这会将我带到结果页面'/results
但我没有得到任何结果!!
为了获得结果,我必须搜索并停留在'/results'
页面上。 标题中的 DataSearch 组件是否缺少我的道具:
<DataSearch
componentId="SearchSensor"
dataField={["original_title"]}
className="search-bar"
showIcon={true}
iconPosition="right"
innerClass={{
title: "text-title",
input: "text-input",
list: "text-item"
}}
/>
同样,为了获得结果,我必须从结果页面上的 DataSearch 组件进行搜索。 当我从标题中的 DataSearch 组件进行搜索时,搜索不起作用。
那么如何设置它以便能够从我可能在的任何路线上执行搜索(例如,从 Header 中的 DataSearch 组件进行搜索)?
在这里,您将仅使用DataSearch
进行自动完成,然后重定向到实际结果的结果页面。 为此,您可以使用DataSearch
文档上的onValueSelected
道具:
使用通过用户交互选择的值调用
onValueSelected
。 它仅适用于autosuggest
并在选择建议或按 Enter 键执行搜索时调用。 如果操作原因是'SUGGESTION_SELECT'
它还会传递操作原因和源对象。
因此,您可以在主页上获取所选值,然后使用它在结果页面上进行搜索。 此值可以存储在组件的状态中以进行搜索,或者您也可以在结果页面中添加DataSearch
并使用URLParams
从 url 设置其值。 例如:
<DataSearch
...
componentId="q"
onValueSelected={(val) => Router.push(`?q=${val}`)} // using nextjs router here for example
/>
<DataSearch
...
componentId="q" // will set its value from the param 'q'
URLParams
className="hidden" // adding some CSS to hide it if not needed
/>
<ReactiveList
...
react={{
and: ['q']
}}
/>
另外,您也可以使用onValueSelected
主页上设置所选值状态(或存储),然后查询ReactiveList
结果页上有defaultQuery
道具文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.