我已经在数据库中保存了一个查询并重新调用它以再次运行。但是,我不知道如何重新运行查询。
我在 onChange 中获取查询,并将值作为字符串保存到数据库中,以便稍后调用,以便对其进行处理。
<ReactiveBase app={this.props.app} url={config.elastic.URL} >
<StateProvider
onChange={(prevState, nextState) => {
queryString = nextState;
console.log('onChange');
}}
如果这是正确的做法,我正在寻找一种将查询字符串放入 DataSearch 组件的方法。该查询非常大,因为我在搜索中附加了其他组件。
如果我将 DataSearch 的值设置为我的 queryString 我无法在搜索栏中输入
<DataSearch
dataField={this.props.refinement.searchBar}
componentId="search"
placeholder="Search books or videos"
autosuggest={false}
debounce={debounce}
showClear={true}
customQuery={this.props.customQuery}
defaultValue={this.props.defaultValue}
value={queryString}
>
</DataSearch>
该查询也是一个弹性搜索查询,所以我得到一个充满 JSON 的搜索栏。我可以获取单独的元素并将 queryString 设置为我想要的一半,但使用我无法输入的搜索栏。
var objectQuery = JSON.parse(selectedQueryString);
queryString = objectQuery.search.value;
更新
这有助于能够在 searchBar 中键入并更新值,甚至可能是 DataSearch 组件的大部分方式。
value={this.state.value}
onChange={(value, triggerQuery, event) => {
this.setState(
{
value,
},
() => triggerQuery(),
);
}}