如何从全局上下文中调用React组件的功能(Coherent UI)

时间:2016-04-13 18:20:04

标签: javascript reactjs

我对React很陌生,我正在尝试使用Coherent UI开发用于游戏引擎的UI。我的用户界面是使用React构建的,我试图将来自Coherent UI的消息发送到我的React应用程序。

Coherent UI提供了将原始javascript脚本命令发送到浏览器以执行或注册事件的功能,但这些命令都不适用于我。

我希望Coherent UI发送简单的javascript命令toggleLoadingAnimation();,但我不知道如何在我的React UI中创建这个javascript函数,该函数实际上会调用组件的功能或更改其功能状态。

以下是发送Javascript命令的相关用户界面信息:https://coherent-labs.com/Documentation/cpp/dc/dc7/_binding_cxx.html

如何格式化命令或正确注册要以这种方式调用的组件的回调函数?

有没有办法告诉组件调用其中一个成员函数?

3 个答案:

答案 0 :(得分:0)

你可以改变道具然后再做ReactDOM.render,反应组件会保持状态。

答案 1 :(得分:0)

这听起来像React反模式,但您可以考虑在a内定义一个函数:

componentDidMount

答案 2 :(得分:0)

我最终使用Redux解决了这个问题,并在窗口级别公开了商店。

组件订阅商店(通常自动使用Redux' connect()),然后可以发送调度消息,并由订阅的组件提取。

const store = createStore(Reducer, { variants, selectedVarient: 0, loadingVisible: false });
window.store = store;
...
<Provider store={ store }>
  <App />
</Provider>

这允许我从控制台发出命令(类似的Coherent UI可以发送命令),如下所示:

store.dispatch({ type: 'SET_LOADING_VISIBLE', loadingVisible: true });