在 Reactjs 中初始加载后,您将如何基于 ajax 查询创建新元素?
How would you create new elements based on an ajax query after initial load in Reactjs?
我刚开始使用 React.js。从理论上讲,它看起来很整洁,但我不得不重新考虑如何解决我习惯用 jQuery 解决的简单问题。其中之一是如何在基于用户输入的初始加载后动态生成组件。
假设我有一个 <SearchBox />
,我希望用户能够输入查询,单击搜索,并根据结果生成任意数量的 <SearchResult />
组件ajax 个电话。我假设我会创建一个附加到 SearchBox 的更新方法,调用 onClick 来获取数据,但是一旦数据到达,我将如何在每次搜索后动态呈现 SearchResult 组件?
我想我正在寻找与 Angular 的 ng-repeat
指令类似的东西,但我在 React 中没有看到任何类似的效果。
我可能是错的,但我认为它可以像这样简单:
...
render: function() {
var length = data.length; // data contains the result you received from AJAX
var searchResultObjects = [];
for (var i = 0; i < length; i += 1) {
searchResultObjects[searchResultObjects.length] = <SearchResult />;
}
return (
<ul>
{searchResultObjects} // assuming that your SearchResult object returns an <li> item from its render function
</ul>
);
}
...
here就是一个例子。
更新:
看看这个updated fiddle以更新结果为例,观察console
window中的事件浏览器的开发者工具。希望这能澄清。
制作列表最简单的方法是将搜索结果映射到 React 组件并将数据添加到 prop。
render: function() {
var searchResultItems = this.state.searchResults.map(function(object, index) {
return <SearchResult key={index} data={object} /> // Mapping each item to a React component with the results in a data prop
});
return (
<div>
<SearchBox />
<ul>
{searchResultItems}
</ul>
</div>
);
}
确保始终添加一个键,以便 React 可以轻松区分每个项目。
您可以将搜索结果保持在状态中,并在新搜索后使用 setState 更新它,它将以这种方式重新呈现。
我刚开始使用 React.js。从理论上讲,它看起来很整洁,但我不得不重新考虑如何解决我习惯用 jQuery 解决的简单问题。其中之一是如何在基于用户输入的初始加载后动态生成组件。
假设我有一个 <SearchBox />
,我希望用户能够输入查询,单击搜索,并根据结果生成任意数量的 <SearchResult />
组件ajax 个电话。我假设我会创建一个附加到 SearchBox 的更新方法,调用 onClick 来获取数据,但是一旦数据到达,我将如何在每次搜索后动态呈现 SearchResult 组件?
我想我正在寻找与 Angular 的 ng-repeat
指令类似的东西,但我在 React 中没有看到任何类似的效果。
我可能是错的,但我认为它可以像这样简单:
...
render: function() {
var length = data.length; // data contains the result you received from AJAX
var searchResultObjects = [];
for (var i = 0; i < length; i += 1) {
searchResultObjects[searchResultObjects.length] = <SearchResult />;
}
return (
<ul>
{searchResultObjects} // assuming that your SearchResult object returns an <li> item from its render function
</ul>
);
}
...
here就是一个例子。
更新:
看看这个updated fiddle以更新结果为例,观察console
window中的事件浏览器的开发者工具。希望这能澄清。
制作列表最简单的方法是将搜索结果映射到 React 组件并将数据添加到 prop。
render: function() {
var searchResultItems = this.state.searchResults.map(function(object, index) {
return <SearchResult key={index} data={object} /> // Mapping each item to a React component with the results in a data prop
});
return (
<div>
<SearchBox />
<ul>
{searchResultItems}
</ul>
</div>
);
}
确保始终添加一个键,以便 React 可以轻松区分每个项目。 您可以将搜索结果保持在状态中,并在新搜索后使用 setState 更新它,它将以这种方式重新呈现。