2016-10-22 11 views
6

このエラーは、axiosを使用するとかなり頻繁に発生します。定義されていないプロパティではsetstateできません。実際の応答を得ています。私はかなり混乱しています。ソリューションが評価されます。TypeError:未定義のプロパティ 'setState'を読み取ることができません

axiosによって

JSON応答は、標準関数内

[ { main: 1, 
    left: 0, 
    right: 0, 
    top: 0, 
    bottom: 0, 
    cid: 6, 
    '$created': '2016-10-21T11:08:08.853Z', 
    '$updated': '2016-10-22T07:02:46.662Z', 
    stop: 0 } ] 

code.js

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import axios from 'axios'; 
    export default class Main extends React.Component{ 
     constructor(props){ 
      super(props); 
      this.state = { 
       status:[] 
      } 
     } 
     componentDidMount(){ 

      this.getdata() 
     } 
     getdata(){ 
      axios.get('/getactions') 
       .then(function (data) { 
        console.log(data.data); 

        this.setState({ 
         status:data 
        }) 
       }) 
     } 

     render(){ 
      console.log(this.state) 
      return(
       <div> 
        <button >Left</button> 

       </div> 
      ) 
     } 
    } 


    ReactDOM.render(<Main/>,document.getElementBy 

Id('app')) 
+0

の完全なスタックトレースを投稿してください例外(devコンソールにあるはずです) – Ivan

答えて

12

thisを返信通常、それはと呼ばれていますかによって決定され、ない関数が作成された場所。そこでここでは、コールバック関数内thisは外thisと同じではありません。したがって、そのコンテキストのthisオーバー近いしかし

getdata(){ 
    axios.get('/getactions') 
     .then(function (data) { 
      console.log(data.data); 

      this.setState({ 
       status:data 
      }) 
     }) 
} 

アロー機能、、、:

getdata(){ 
    axios.get('/getactions') 
     .then(data => {    // <== Change is here 
      console.log(data.data); 

      this.setState({ 
       status:data 
      }) 
     }) 
} 
関連する問題