我有一个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);
});
答案 0 :(得分:0)
您应该能够创建本机模块以促进此功能。
请查看此处的文档:https://facebook.github.io/react-vr/docs/native-modules.html
创建模块并将其链接到client.js后,您可以将其导入组件并将其用作react vr和套接字实现之间的通信层。
为此,请在init
添加<{p>中的client.js
功能中执行此操作
const socketsModule = new SocketsModule();
然后在新导入或该文件本身中添加:
export class SocketsModule extends Module {
constructor() {
super('SocketsModule');
}
init() {
}
customMethod() {
// Do fun stuff here
}
}
然后在您想要调用这些方法的反应VR组件中,首先要包含这个新模块:
const SocketsModule= NativeModules.SocketsModule;
然后您可以从该组件中访问其方法:
SocketsModule.customMethod();