使用React.render()渲染的两个组件之间的交互是否可能
Is interation between two components rendered using React.render() possible?
我在一个页面中有一个员工列表。每个员工项目旁边都有一个复选框。这是使用react js开发的。现在,每隔5秒,我需要根据员工的复选框状态,在页面上检查并显示一些可用/不可用的员工状态。
<div id="container">
<!-- List of employees will be placed here by react.js -->
</div>
<div id="status-bar">
你能告诉我两个div是如何相互作用的吗?因为我正在分别渲染它们:
React.render(<ListItems />, document.getElementById('container'));
React.render(<StatusComponent />, document.getElementById('status-bar'));
我不相信这两个组件可以在不使用父组件的情况下相互交互。我建议制作一个将两者结合起来的组件,比如这样(用ES6编写,根本没有测试……只是举个例子):
class EmployeeModule extends React.component {
_countEmployees() {
// Magic to get employee count here..
var count = getEmployeeCount();
this.setState({numEmployees: count});
}
componentDidMount() {
// Count employees every 5 seconds
this.interval = window.setInterval(() => this._countEmployees(), 5000));
}
componentWillUnmount() {
window.clearInterval(this.interval);
}
render() {
return (
<div className="employee-module-wrapper">
<ListItems />
<StatusComponent numEmployess="{this.state.numEmployees}" />
</div>
)
}
}
实际上,您需要做的是让EmployeeModule
处理两个组件之间的交互。您可以从ListItems
模块中获得所需的信息,并将其设置在父模块的状态上。在_countEmployees
内部调用setState
将触发对render
函数的调用,该函数将在StatusComponent
上设置属性numEmployees
,从而更新您的状态模块。
希望这能帮助
我认为最好、更简单的方法是创建存储。您可以使用reduxJS轻松创建存储。您还可以将一个块包含在另一个块中,并通过this.ops提供数据。
相关文章:
- 是否有任何JavaScript UI组件可以显示字符串之间的差异
- 设置两个反应组件之间状态的正确方式
- Ember.js:接受的子组件和父组件之间通信的最佳实践
- angular2@组件和类之间的关系
- Angular 2,在没有直接关系的两个组件之间共享一个对象
- 在 React/Redux 中管理同级组件之间的滚动状态
- 如何更新angular2中组件之间的事件数据
- Aurelia中HTML组件和普通组件之间的区别
- Vuejs中同级组件之间的通信
- 尝试在组件之间传递数据时未定义
- React组件之间共享属性
- 如何在不让web组件的原型进入全局命名空间的情况下维护它们之间的依赖关系
- 在页面之间共享组件,而无需重新加载
- Reactjs:如何在组件之间共享 websocket
- 在两个组件之间传输状态
- Reactjs 组件之间的通信
- AngularJS:在组件之间进行通信的最佳实践是什么?
- 如何管理独立反应组件之间的通信
- 响应组件之间的交互
- 两个网络组件之间的绑定:谷歌地图+地理定位