2016-09-16 3 views
0

React NativeおよびJava Scriptの開発は初めてです。 JSONオブジェクトを取得してクライアントに表示しようとしていますが、「未定義のプロパティを読み取れません」というエラーが発生しています。 Websocketの代わりに "Fetch"を使用している場合も同様です。私は問題を理解することができません。ReactネイティブでWebソケットを使用しているときに未定義エラーのプロパティを読み取ることができません。

コードをデバッグして、サーバーからJSONを受け取っていることがわかりました。サーバー上の

fetchDataWithSockets() 
    { 
     var url='ws://localhost:3000/'; 
     var ws = new WebSocket(url); 
     var object; 
     ws.onmessage = (e) => { 
      object = JSON.parse(e); 

     } 
       this.setState({ 
        dataSource: this.state.dataSource.cloneWithRows(object.movies), 
        isLoading: false, 
        empty: false, 
        documents: object.movies 
       }); 

    } 

オブジェクト:任意の助けをいただければ幸いです

var object = { 
    "title": "The Basics - Networking", 
    "description": "Your app fetched this from a remote endpoint!", 
    "movies": [ 
    { "title": "Star Wars", "releaseYear": "1977"}, 
    { "title": "Back to the Future", "releaseYear": "1985"}, 
    { "title": "The Matrix", "releaseYear": "1999"}, 
    { "title": "Inception", "releaseYear": "2010"}, 
    { "title": "Interstellar", "releaseYear": "2014"} 
    ] 
} 

:)

+0

私の似たような質問への回答を見てください:https://stackoverflow.com/a/49030162/8009977 – Roman

答えて

0

objectはラインthis.setState...で完全に利用できない は、ここに私のクライアントコードです。 WebSocketのonmessageの中にthis.setState行を移動する必要があります。あなたのコードは次のようになります:

fetchDataWithSockets(){ 
    var url='ws://localhost:3000/'; 
    var ws = new WebSocket(url); 
    var object; 
    ws.onmessage = (e) => { 
     object = JSON.parse(e); 

     this.setState({ 
      dataSource: this.state.dataSource.cloneWithRows(object.movies), 
      isLoading: false, 
      empty: false, 
      documents: object.movies 
     }); 
    } 
} 
関連する問題