如何在渲染函数中检查 react 中子组件的状态
How to check state of a child component in react in render function?
我正在渲染两个组件SearchForm和RecentSearch,例如
var SearchFormContainer = React.createClass({
render: function() {
return (
<div>
<SearchForm />
<RecentSearch />
</div>
);;
}
});
搜索表单中有一个状态。根据我想呈现最近搜索组件的状态。如何查看搜索源的状态?我尝试的是:
var SearchFormContainer = React.createClass({
render: function() {
return (
<div>
<SearchForm ref="search_form"/>
{this.refs.search_form.state ? <RecentSearch /> : null}
</div>
);
}
});
this.refs.search_form.状态重构未定义。
将状态保留在父容器中 ( SearchFormContainer
(。更新此状态,例如通过传递给SearchForm
的回调函数。像这样:
const Container = React.createClass({
onSearch(value) {
this.setState({search: value});
}
render() {
<div>
<SearchForm onSearch={this.onSearch} />
<RecentSearch recentValue={this.state.search} />
</div>
}
});
const SearchForm = ({onSearch}) => {
return (
<input
type="search"
onChange={event => onSearch(event.target.value)}
/>
);
}
我也推荐Dan Abromov关于Smart&Dumb Components的文章:https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.qq4cufc2c
希望这有帮助!
在 React 中,状态是一个组件级的概念,它通过将 props 传递给子组件从上到下工作,而不是相反。
如果要根据SearchForm
的状态渲染RecentSearch
组件,则可以向SearchFormContainer
组件添加额外的状态层,该状态基本上跟踪SearchForm
提交并基于此有条件地呈现RecentSearch
。
var SearchFormContainer = React.createClass({
getInitialState: function() {
return { userHasSearched: false }
},
onSearchSubmit: function() {
this.setState({ userHasSearched: true });
},
render: function() {
return (
<div>
//Pass submit handler down to the SearchForm component
<SearchForm onSubmit={this.onSearchSubmit} />
{this.state.userHasSearched ? <RecentSearch /> : null}
</div>
);
}
});
或者更好的是,消除引入的额外复杂性(除非您对SearchFormContainer
有特定的未来意图(,并且只需在 <SearchForm />
中有条件地返回您的<RecentSearch />
组件,您的状态目前实际位于该位置。
相关文章:
- React组件等待所需道具进行渲染
- React组件-设置页面标题
- 为react组件传递道具的最佳方式
- react组件中的绑定方法
- 加载服务器端渲染的React组件后执行脚本
- 如何基于依赖性导入React组件
- 可以't在我的React组件中加载图像
- jsx-React组件中的格式化编号
- 在进行服务器端渲染时,我可以向客户端发送React组件吗
- 使用jquery在react组件内部设置样式可以吗
- 为什么我不能将键映射到 React 组件上
- webpack样式加载器-在react组件上导入不同的样式,而无需重写
- 无法将react组件作为属性传递给另一个组件
- 继承React组件的正确方式
- 在JSX中围绕React组件封装高阶组件(HOC)
- 根据React组件的名称渲染该组件
- react组件的正确命名规范
- 在另一个文件夹中显示React组件
- AJAX 请求没有在我的 React 组件中设置 this.state.data
- 有没有一条清晰的路径,我可以实现一个在 ScalaJS + React 中广泛使用上下文的 React 组件