2016-08-05 9 views
1

ajaxリクエストによってサーバーに状態を更新しています。サーバーからデータを受信して​​いますが、何らかの理由で状態が更新されず、配列を反復しようとすると定義されていません。ajaxリクエストを介して状態を更新しますが、状態はまだ定義されていません

class TodoList extends Component { 
    constructor(props) { 
    super(props); 
    this.state = { 
     data: undefined 
    } 
    } 

    componentWillMount() { 
    request 
     .get('http://localhost:8080/api/todo') 
     .end(function(err, res) { 
     this.setState({data: res}); 
     }.bind(this)); 
    } 

    render() { 
    return (
     <div> 
     <h1>Todo Items</h1> 
     <ul> 
      {this.states.data.map((item) => { 
      return <li>item.data</li> 
      })} 
     </ul> 
     </div> 
    ); 
    } 
} 

コンソールログ

Uncaught TypeError: Cannot read property 'data' of undefined 
Uncaught TypeError: Cannot read property '_currentElement' of null 

答えて

1

あなたはthis.state.data

class TodoList extends React.Component { 
 
    constructor(props) { 
 
    super(props); 
 
    this.state = { 
 
     data: [] 
 
    } 
 
    } 
 

 
    componentWillMount() { 
 
    /*request 
 
     .get('http://localhost:8080/api/todo') 
 
     .end(function(err, res) { 
 
     this.setState({data: res}); 
 
     }.bind(this));*/ 
 
    } 
 

 
    render() { 
 
    return (
 
     <div> 
 
     <h1>Todo Items</h1> 
 
     <ul> 
 
      {this.state.data.map((item) => { 
 
      return <li>item.data</li> 
 
      })} 
 
     </ul> 
 
     </div> 
 
    ); 
 
    } 
 
} 
 

 
ReactDOM.render(
 
    <TodoList />, 
 
    document.getElementById('app') 
 
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 
<div id="app" />

方法と、デフォルト値でのレンダリングに this.stateで構文エラーを作りました
0

まず第一に、あなたはタイプミス、変更があります:あなたのデータがフェッチされる前に、また

{this.state.data.map((item) => { 
    return <li>item.data</li> 
})} 

:へ

{this.states.data.map((item) => { 
    return <li>item.data</li> 
})} 

を、state.dataundefindedであり、方法はありません.map()です。空の配列に
変更を:

constructor(props) { 
    super(props); 
    this.state = { 
    data: undefined 
    } 
} 

に:

constructor(props) { 
    super(props); 
    this.state = { 
     data: [] 
    } 
} 
+0

は今、そのは 'キャッチされない例外TypeErrorを言います:[] :' this.state = { データに ':this.state.data.mapはfunction' –

+0

ではありません、あなたは' this.state = { を未定義 データを}変更しました} '?はいの場合は、サーバーから得た結果を提供してください。 –

+0

これは私が受け取ったレスポンスです。レスポンス{req:Request、xhr:XMLHttpRequest、text: "[{{" _id ":" 57a1d7606920c29a9d61cb40 "、"著者 ":" sffsg ...または ":" dsdsdsdsd7 "、" title " "OK"、statusCode:200 ...} ' –

関連する問題