【发布时间】:2014-06-06 07:16:39
【问题描述】:
(reactjs 新手在这里)...
我正在使用 Reactjs 创建一个我拥有的页面
- 一个简单的搜索框
- 用户输入搜索文本
- 从服务器获取数据并显示
现在,“searchText”和“data”是我的状态,我试图弄清楚如何仅在从服务器接收到数据后更新“结果”。
我有一个事件,每当用户输入某些内容作为搜索文本时,我都会处理该事件
handleUserInput: function(searchText) {
this.loadDataFromServer(searchText);
this.setState({
searchText: searchText,
});
},
但是使用上面的函数,会发生以下事情
- 初始数据已加载
- 用户输入内容
-
结果立即更新为仅显示包含搜索文本的结果(代码如下),但同时向服务器发出请求以获取结果包含搜索文本的结果
this.props.products.forEach(function(product) { if(product.name.toLowerCase().indexOf(this.props.searchText) > -1) { 行 = 行.推(行) } }.bind(this));
大约一秒钟后,从服务器接收到新数据并再次刷新结果。
显然我想做的是
- 加载初始数据
- 用户键入搜索文本
- 向服务器请求数据
- 从服务器接收数据
- 更新结果
实现这一目标的正确方法是什么?
【问题讨论】:
-
在第 3 步中,是什么将结果列表过滤为“仅包含搜索文本的结果”?
-
我已经添加了部分 - 它只是检查名称是否包含搜索文本。
标签: javascript reactjs