2016-07-14 9 views
0

新しいレスポンスには、以下のような類似のタイトルがいくつかありますが、エラーメッセージUncaught TypeError: this.state.stock.map is not a functionのエラーメッセージが表示されません。別のAPIコールで同様のコードを使用すると、そのようなエラーは発生しません。コードは以下の通りです。 getメソッドのデータを在庫に割り当てている場合、そのメソッドも機能していないと同じ問題が発生します。何が問題ですか ?私が参照したいくつかのリンク。Uncaught TypeError:this.state.stock.mapがReactの関数ではありません

Link 1 Link 2

Image after discussion.

var StockData = React.createClass({ 
     getInitialState: function() { 
     return { 
      stock: [] 
     }; 
     }, 

     componentDidMount: function() { 
     this.serverRequest = $.get(this.props.source, function (data) { 
      var old = JSON.stringify(data).replace("//", ""); //convert to JSON string 
      var obj = JSON.parse(old);      //convert back to JSON 
      console.log(obj); 
      this.setState({ 
       stock: obj 
      }); 
     }.bind(this)); 
     }, 

     componentWillUnmount: function() { 
     this.serverRequest.abort(); 
     }, 

     render: function() { 
     return (
       React.createElement("div",null, 
         React.createElement("ul",null, 
          this.state.stock.map(function (listValue){ 
           return React.createElement("li",null,listValue.t,"(",listValue.e,")-"," Current Price :",listValue.l_cur," Date :",listValue.lt 
           ); 
          }) 
         ) 
        ) 
     ); 
     } 
    }); 

    ReactDOM.render(React.createElement(StockData, { source: "http://www.google.com/finance/info?q=NSE:ATULAUTO,WIPRO,INFY" }),document.getElementById('proper-list-render3')); 

答えて

0

私は最終的に問題の解決策を持って自己

render: function() { 
     var self = this; 
     return (
       React.createElement("div",null, 
         React.createElement("ul",null, 
          self.state.stock.map(function (listValue){ 
           return React.createElement("li",null,listValue.t,"(",listValue.e,")-"," Current Price :",listValue.l_cur," Date :",listValue.lt 
           ); 
          }) 
         ) 
        ) 
     ); 
     } 
+0

それでも問題は解決しません。 –

+0

レンダリングでconsole.log(this.state)を実行できます。this.state.stockが配列ではない可能性があります。 –

+0

を参照してください。 –

0

としてこれを保存して機能をレンダリング交換してください。 URLを呼び出した後に受信したデータは、JSONではなく文字列形式で受信されます。正しいコードは以下の通りですが、今は正常に動作しています。助けてくれてありがとう@ Piyush.kapoor。

componentDidMount: function() { 
     this.serverRequest = $.get(this.props.source, function (data) {  
      var old = data.replace("//", ""); 
      this.setState({ 
        stock: JSON.parse(old) 
       }); 
     }.bind(this)); 
     } 
関連する問題