2017-07-11 2 views
0

Reactアプリケーションで状態を設定する際に問題が発生しているようです。私はまだReactを学んでいるので、簡単に修正できるはずです。_this8.setStateは関数ではありません

現在、私は.NETコアから提供しているページからデータを取得するために存在するコンポーネントに対して以下の設定を行っています。私はページをデバッグし、私が得ている応答変数内のデータを見ることができるので、データを正しく提供していることがわかります。しかし、状態を設定しようとすると、「_this8.setStateは関数ではありません」というエラーが表示されます。私はStackOverflowを検索し、 "_this2.setStateは関数ではない"ということについての投稿を見ていて、バインディングを推奨します。私はReactアプリ内のさまざまな方法で様々なバインドを試みましたが、これまでのダイスはありませんでした。私は下記の私のリアクションコードを共有します:

// GET Request to data 
class TableBodyData extends React.Component { 
    constructor() { 
     super(); 
     this.state = { data: [] }; 
     this.componentDidMount = this.componentDidMount.bind(this); 
    } 

    updateTable() { 
     $(function() { 
      $.getJSON("/table", (res) => { 
       const MAP_DATA = res.data; 
       this.setState({ MAP_DATA }); 
      }); 
     }); 
    } 

    componentDidMount() { 
     this.updateTable(); 
    } 

    render() { 
     return (
      <TableBody data={this.state.data} /> 
     ); 
    } 
} 

// Renders body of Table where data is input 
class TableBody extends React.Component { 
    render() { 
     return (
      <tbody> 
       <tr> 
        <td>{this.props.data.refDataType}</td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td> 
         <input type="checkbox" /> 
        </td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
       </tr> 
      </tbody> 
     ); 
    } 
} 

助けていただければ幸いです!ありがとうございました。

答えて

1

this内部コールバックメソッドは、Reactクラスインスタンスの代わりにコールバックを表します。

変更:へ

updateTable() { 
      $(function() { 
       $.getJSON("/table", (res) => { 
        const MAP_DATA = res.data; 
        this.setState({ MAP_DATA }); 
       }); 
      }); 
     } 

:まだ

updateTable() { 
     $(()=> { 
      $.getJSON("/table", (res) => { 
       const MAP_DATA = res.data; 
       this.setState({ MAP_DATA }); 
      }); 
     }); 
    } 
+2

またはより良い、その不要なラッパー完全 – azium

+0

VEDを取り除くには、どうもありがとうございました!私は一般的に非特異的な指標をあまり使わないので、Reactによって生成されたクラス全体を参照していると考えました。私は今すべて解決されています、ありがとう! – LinkChef

+0

アジウム私はそれをやってしまった。私が最初に書いた理由は、同僚の同僚が彼のReactコードを書いたのと同じスタイルだったので、私はデバッグしやすくするためにあまり変わらないようにしていました。でも、ありがとう! – LinkChef

関連する問題