从外部更新组件状态React(在服务器响应上)
我正在学习React。 目前,我有几个components
被链接作为亲子,通过它们之间的通信很容易与callback。
我有一个表 (反应组件)和一个小的模态Ajax forms (没有反应)。 当我收到来自服务器的响应 (一个项目)时,我想将项目添加到表格中。
我的主要问题是,是否可以从外部 触发组件状态更改 (在这种情况下,服务器响应)?
你能触发组件外的组件状态变化吗?
是。 下面是一个简单的例子
在你的反应组件中设置一个全局可用的闭包,它将在函数被触发时更新它的状态。
componentWillMount(){ globalVar.callback = (data) => { // `this` refers to our react component this.setState({...}); }; }
然后,当你的ajax'd响应返回时,你可以用返回的数据来触发事件
globalVar.callback(data);
或者为了更强大的function,build立一个自定义事件和全局监听器
component
状态的最佳实践是保持真正的内部state
数据,而不是组件外的兴趣。 如果您必须从新的外部数据使用props
更改组件,只需从外部更改props
,组件重新渲染将对变化做出反应。
我认为你应该看看websocket,你将不得不将它们绑定到你的反应应用程序和服务器端,但它会给你想要的效果。