【发布时间】:2017-12-05 14:37:52
【问题描述】:
我有一个 ReactVr 对象,我正在使用下面的代码进行渲染。初始化 React 后,我会定期接收服务器更新,我想将这些更新作为道具传递给 React,我该怎么做?可以从我的“普通”JS 中设置 React 对象中的道具吗?
ReactVR.init(
'./build/index.bundle.js',
document.body,
// third argument is a map of initialization options
{
initialProps: {
source: 'world.json',
userType: "typ1"
},
cursorVisibility: 'visible'
}
);
编辑:服务器更新是通过 Websockets 连接进行的,但是从 React 内部没有收到消息,仅在“正常”JS 中。
在“普通”JS 中,这会从服务器返回数据,如果我在 React 中使用相同的数据,则连接会打开,但永远不会收到消息。然而,消息可以从 React 内部发送。
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});
【问题讨论】:
-
您如何接收服务器更新?另外,要回答您的问题,是的,您可以从“正常” js 设置反应道具,因为反应是正常的 js。
-
它们是通过 websockets 连接来的,但是从 React 内部没有收到消息,只有在“正常”JS 中
-
您能否发布更多代码来展示您已经尝试过的内容?
-
@T Porter 添加了
-
根据您设置连接的位置,当 React 组件重新渲染时,它可能会丢失。 This article 似乎很好地解释了该过程的客户端和服务器端。还有一个react-websocket 库可能对您有用。
标签: javascript reactjs react-360