如何调用React组件's函数(Coherent UI)
How to call React component's function from a global context (Coherent UI)
我是React的新手,我正在尝试使用Coherent UI开发一个用于游戏引擎的UI。我的UI是用React构建的,我正试图将来自Coherent UI的消息导入我的React应用程序。
连贯的UI提供了向浏览器发送原始javascript脚本命令以执行或注册事件的能力,但这两种功能都不适用于我
我希望Coherent UI发送一个简单的javascript命令toggleLoadingAnimation();
,但我不知道如何在我的React UI中创建这个javascript函数,它将实际调用组件的函数或更改其状态。
以下是Coherent UI关于发送Javascript命令的信息:https://coherent-labs.com/Documentation/cpp/dc/dc7/_binding_cxx.html
如何格式化命令或为要以这种方式调用的组件正确注册回调函数?
有没有任何方法可以告诉组件调用其成员函数之一?
这听起来像是React反模式,但您可能会考虑在componentDidMount
内部定义一个函数:
componentDidMount() {
var that = this;
window.toggleLoadingAnimation = function () {
that.whateverComponentMethodYouWant();
}
}
componentWillUnmount() {
window.toggleLoadingAnimation = undefined;
}
我最终使用Redux解决了这个问题,并在窗口级别公开了Store。
组件订阅存储(通常使用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 });
您可以更改道具,然后再次执行ReactDOM.render,react组件将保持状态。
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- jQuery UI自动完成突然停止工作
- 如何使用skip参数使用angular ui引导进行服务器端分页
- AngularJS UI路由器不能像ng路由器那样工作
- 我可以更改剑道UI网格吗's的外键值
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 停止jQuery UI滑块移动超过给定值
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- Jquery UI自动完成无法工作
- 语义ui如何使用javascript启用或禁用下拉列表
- jquery ui滑块上的滑块值
- jQuery UI可排序-多连接列表拖动
- 如何在Angular UI网格中选择下一行
- 对具有ui typeahead的对象中的值执行orderBy
- AngularJS ui路由器html5模式中断路由
- EJS中的Angularjs-Ui路由器参数
- 使用导航属性创建Kendo UI网格模型的问题
- ui网格将单元格显示为选择标记
- 如何调用React组件's函数(Coherent UI)