【问题标题】:ReactiveSearch running a saved queryReactiveSearch 运行保存的查询
【发布时间】:2020-07-15 11:45:51
【问题描述】:

我已经在数据库中保存了一个查询,并重新调用它以再次运行。但是,我不知道如何重新运行查询。

我在 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(),
        );
  }}

【问题讨论】:

  • 嘿,如果我的 queryString 是正确的,你的意思是搜索值。因此,您将其传递给使组件成为受控组件的值,因此您可能还需要定义 onChange 处理程序以更改值。如果您只需要添加初始挂载的值,您可以使用defaultValue。如果您有任何问题,请告诉我。
  • 第一次加载组件时使用 defaultValue 我需要能够设置搜索中使用的每个组件的值。我希望一些黑盒魔法能为我处理这一切。但是,您需要设置搜索中使用的每个组件的值

标签: reactjs reactivesearch


【解决方案1】:

您不能将查询字符串推回组件并让它处理用于创建查询的所有组件。您必须从查询字符串中获取值并再次设置组件的值。然后将通过 onChange 方法重新运行查询。

【讨论】:

    猜你喜欢
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    相关资源
    最近更新 更多