从页面JS中访问React对象?

时间:2017-12-05 14:37:53

标签: javascript reactjs react-360

我有一个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);

  });

1 个答案:

答案 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();