从外部React更新组件状态(在服务器响应上)

Axx*_*iss 47 reactjs

我正在学习React.目前我有几个components被锁定为亲子关系,通过回调可以很容易地进行交流.

我有一个(反应组件)和一个小模态ajax 形式(没有反应).当我从服务器收到响应(项目)时,我想将项目添加到表中.

我的主要问题是,是否有可能从外部响应触发组件状态更改(在这种情况下是服务器响应)?

enj*_*ife 74

可以在组件外触发组件状态更改吗?

是.这是一个简单的例子

在您的react组件中设置一个全局可用的闭包,它将在触发该函数时更新它的状态.

componentDidMount(){
 globalVar.callback = (data) => {
    // `this` refers to our react component
    this.setState({...});     
  };
}
Run Code Online (Sandbox Code Playgroud)

然后,当您的ajax响应返回时,您可以使用返回的数据触发事件

globalVar.callback(data);
Run Code Online (Sandbox Code Playgroud)

或者对于更健壮的东西,使用自定义事件或订阅

  • 优秀!我得到了它在全局变量上保存反应对象引用的工作,但它感觉不对.这种方式更清洁. (2认同)
  • 精彩!现在我可以使用jQuery并同时做出反应.谢谢! (2认同)
  • 您如何设置全局? (2认同)
  • 多么辉煌啊。现在我可以重构遗留应用程序,用 React 部分替换它,而不需要完全重写。谢谢 ! (2认同)