2017-12-05 10 views
4

私は以下のコードでレンダリングしているReactVrオブジェクトを持っています。 Reactが初期化された後、私は定期的にサーバーのアップデートを受け取り、React as propsに渡したいのですが、どうすればいいですか?私の "普通の" JSからReactオブジェクトの小道具を設定できますか?JS内のReact Objectにアクセスしますか?

ReactVR.init(
    './build/index.bundle.js', 
    document.body, 
    // third argument is a map of initialization options 
    { 
     initialProps: { 
     source: 'world.json', 
     userType: "typ1" 
     }, 
     cursorVisibility: 'visible' 
    } 
); 

編集:Serverの更新プログラムは、WebSocketを接続を介して来ているが、内リアクトからのメッセージは、唯一の「普通の」JSで、受信されていません。

「通常の」JSでは、これはサーバーからデータを返します。これをReact内で使用すると、接続は開かれますが、メッセージは受信されません。ただし、React内からメッセージを送信することはできます。

socket.addEventListener('message', function (event) { 

     console.log('Message from server ', event.data); 

    }); 
+1

どのようにサーバーの更新を受信して​​いますか?また、あなたの質問に答えるために、反応は通常のjであるので、あなたはあなたの "普通の" jから反応の小道具を設定することができます。 –

+0

Websockets接続を経由して来ていますが、メッセージが受信されていないReact内の「通常の」JS – cal

+0

あなたはすでに試したことを示すためにいくつかのコードを追加できますか? –

答えて

0

この機能を容易にするために、ネイティブモジュールを作成することができます。

ここで、この周りのドキュメントをチェックアウト:あなたは、モジュールを作成し、あなたのコンポーネントにインポートし、VR反応し、あなたとの間の通信層として使用することができますclient.jsでそれをリンクしたらhttps://facebook.github.io/react-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 
    } 

} 

次に、あなたが反応内VRコンポーネントを呼び出すには、まずこの新しいモジュールを追加します。

const SocketsModule= NativeModules.SocketsModule; 

次に、あなたはそのコンポーネント内からそのメソッドにアクセスすることができます。

SocketsModule.customMethod(); 
+1

これはどこですか? – cal

+0

より完全な例で私の答えを更新しました。 – cidicles

+0

これは素晴らしい、ありがとう!もう1つ、SocketModuleからIndex.vr.jsにイベントを戻すにはどうしたらいいですか? – cal

関連する問題