javascript - 如何在异步数据准备好之前暂停 React-Autosuggest 搜索?
问题描述
我有一个使用React-Autosuggest搜索少量数据的功能,一旦从后端获取,所有数据都存储在内存中。换句话说,在初始批量获取之后,不再有网络调用来进行强力搜索。
我在搜索框调用时调用的函数onSuggestionsFetchRequested
天真地查看this.props.dataset
以返回搜索建议。
<Autosuggest
...
onSuggestionsFetchRequested={({value}) => {this.setState({currentSearchSuggestions: this.getSuggestions(value)});}}
...
/>
getSuggestions(rawValue) {
const toSearchThrough = Object.values(this.props.dataset);
...
}
但是,如果用户在填充之前 输入搜索,this.props.dataset
则即使在数据加载后也不会显示任何建议,直到用户稍微更改其输入,导致getSuggestions
再次调用。
getSuggestions
在数据集准备好之前,我可以做一些聪明的事情来阻止吗?同样,这仅在每个页面加载后才会发生。
解决方案
你能阻止组件在有数据之前渲染吗?如果dataset
是一个空对象,你必须检查它的长度,但是像这样:
{this.props.dataset && (
<Autosuggest ... />
)}
推荐阅读
- javascript - array.includes() 方法在检查另一个数组中是否存在数组/对象时给出 false 是什么?
- android - 当我在主活动中使用开始按钮访问登录活动时,为什么我的应用程序会崩溃?
- haskell - 一般而言,单子变换器是由附加词产生的吗?
- c# - 用于 C# 应用程序中的多个客户端的 MSMQ
- wordpress - Facebook - 卷曲错误:WRITE_ERROR 写入正文失败
- python - Twitter API - Tweepy 库 - send_direct_message
- php - mysqli 从单个 sql 表列返回 json 数组
- swift - 是否可以在 SwiftUI 中使用带有自定义字体的动态字体大小?
- javascript - 有没有使用 javascript 的 Google Cloud Print API 的示例?
- amazon-web-services - 定期修改 AWS AMI