从外部更新组件状态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,你将不得不将它们绑定到你的反应应用程序和服务器端,但它会给你想要的效果。