如何渲染React中另一个组件的搜索结果?
我是React的初学者,使用Webpack构建bundle.js并显示。如何渲染React中另一个组件的搜索结果?
我的需求是提供一些搜索表单,并在搜索表单下面显示结果。所以,为了模块化,我创建了一个包含搜索和结果视图组件的父组件。
现在我已经设计了一个窗体和书面窗体onSubmit事件处理程序,我应该如何继续在结果组件中呈现API结果(现在是虚拟json)。我附上我的意图简要照片供您参考。
回答:
这是基于我上面的评论我的解决方案:https://codesandbox.io/s/q85oq0w10q
创建HOC,将保留您的应用程序的状态,那么你的两个孩子仅仅用于渲染的目的,并且可以由纯函数
import React from 'react'; import { render } from 'react-dom';
const Result = ({results}) => {
return results.map(r => <div>{r}</div>);
}
const Search = (props) => {
const {
searchQuery,
onChange,
search
} = props;
return <div>
<input
type="text"
value={searchQuery}
onChange={onChange}
/>
<button onClick={search}>Search</button>
</div>;
}
class Container extends React.Component {
constructor(props) {
super(props);
this.state = {
searchQuery: '',
results: []
}
this.onSearchQueryChange = this.onSearchQueryChange.bind(this);
this.onSearch = this.onSearch.bind(this);
}
onSearchQueryChange(e) {
this.setState({searchQuery: e.target.value});
}
onSearch() {
// Simulate AJAX call
setTimeout(() => {
this.setState({results: [0, 1, 2, 3, 4]});
}, 1000)
}
render() {
const {results, searchQuery} = this.state;
return <div>
<Search
searchQuery={searchQuery}
onChange={this.onSearchQueryChange}
search={this.onSearch}
/>
<Result results={results} />
</div>;
}
}
回答:
我相信这是你在找什么。工作示例fiddle
所以这个想法是保持您的结果在Container
组件并将其传递给Result
组件。另外Container
组件应该将回调函数传递给您的Search
组件,并且它将通过Search
组件的API结果触发。您也可以看看Redux
。这是一个管理你的应用程序状态的库。用Redux
它可以以更简单的方式实现。
希望它能帮助你。
回答:
在我看来,如果你是新的React。你应该先学习使用React。因为我发现很多人使用Redux(或任何其他应用程序状态处理程序)作为任何数据的存储。
你的情况实际上是学习两个基本思想的好例子:if children need similar thing, parents should handle it
和params go down and callbacks go up
。
所以你所有的逻辑必须在容器组件中,在解析响应并发送到搜索组件之后,使用状态更新(setState)进行http请求函数的回调。 onSubmit调用该回调函数,并将数据发送给Result Component。
所以你不需要额外的库(也许用于http请求)。 1类组件(容器组件)。 2可能是无状态的功能组件(搜索组件&结果组件)。
以上是 如何渲染React中另一个组件的搜索结果? 的全部内容, 来源链接: utcz.com/qa/261877.html