我有一个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连接到达的,但是从内部进行了消息,仅收到消息,仅在"正常"JS。
中在"正常" JS中,此将返回服务器的数据,如果我在React中使用相同的连接,则打开了连接,但从未收到消息。但是,可以从React内部发送消息。
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});
您应该能够创建一个本机模块以促进此功能。
在此处查看围绕此的文档:https://facebook.github.io/reaect-vr/docs/native-modules.html
创建了模块并将其链接到客户端。
在client.js
中的init
函数中执行此操作。
const socketsModule = new SocketsModule();
然后在新的导入中或在该文件本身中可以添加:
export class SocketsModule extends Module {
constructor() {
super('SocketsModule');
}
init() {
}
customMethod() {
// Do fun stuff here
}
}
然后在您的React VR组件中您希望调用这些方法,您首先包括此新模块:
const SocketsModule= NativeModules.SocketsModule;
然后您可以从该组件中访问其方法:
SocketsModule.customMethod();