2016-07-14 7 views
0

neu zu reagieren, habe einige der ähnlichen Titel wie unten gesehen, konnte aber immer noch nicht mit dem Fehler auf der Konsole kommen sagen Uncaught TypeError: this.state.stock.map is not a function klären. Wenn ich den ähnlichen Code in dem anderen api Anruf verwende, dann gibt es keinen solchen Fehler. Der Code ist wie folgt für dasselbe. Wenn ich Daten von der Get-Methode zu Lager gebe, funktioniert das auch nicht und gibt das gleiche Problem. Was ist das Problem ? ein paar Links, die ich erwähnt habe.Uncaught TypeError: this.state.stock.map ist keine Funktion in 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')); 

Antwort

0

machen Replace-Funktion mit Selbst

diese als gespeicherte
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

Immer noch besteht das Problem. –

+0

können Sie console.log (this.state) in der render.I Gues this.state.stock möglicherweise nicht array .lets siehe –

+0

überprüfen Sie das Bild an die Frage angehängt. –

0

ich die Lösung für das Problem endlich. Die nach dem Aufruf der URL empfangenen Daten werden im Zeichenfolgenformat und nicht als JSON empfangen. Der korrekte Code ist wie unten und jetzt funktioniert es gut. Danke @ Piyush.kapoor für die Hilfe.

componentDidMount: function() { 
     this.serverRequest = $.get(this.props.source, function (data) {  
      var old = data.replace("//", ""); 
      this.setState({ 
        stock: JSON.parse(old) 
       }); 
     }.bind(this)); 
     } 
Verwandte Themen