2017-10-31 23 views
-1

]チェックボックスをオフにする方法:が反応:チェックして、私は、これはコンポーネントに反応書い

import React from 'react'; 

export default class Todo extends React.Component { 
    constructor(props) { 
     super(props); 

     // Set initial state 
     this.state = { 
      data: props.data 
     } 
    } 

    changeStatus() { 
     // This throws: Uncaught TypeError: Cannot read property 'state' of undefined 
     console.log(this.state); 
     console.log('status changed'); 
    } 

    render() { 
     let status = this.state.data.opened ? 'opened' : 'closed'; 
     return (
      <li className={"todo " + status} data-endpoint={this.state.data['@id']}> 
       <div className="status"> 
        <input type="checkbox" checked={!this.state.data.opened} onChange={this.changeStatus}/> 
       </div> 
       <a href={window.Routing.generate('todo_list_todo_show', {account: this.props.todoList.account.id, list: this.props.todoList.id, todo: this.state.data.id}, true)}>{this.state.data.name}</a> 
      </li> 
     ); 
    } 
} 

私は、チェックボックスは、データベース内の行を更新するために、サーバーへの呼び出しに応じて、チェックしてチェックを外していることを望みます。

残念ながらconsole.log()は例外をスロー:

Uncaught TypeError: Cannot read property 'state' of undefined

at changeStatus (Todo.jsx:20)

私は、ステータスの変更を処理する方法にstateにアクセスするにはどうすればよいですか?

+1

試し 'のonChange = {this.changeStatus.bind(これは)}' – Rajesh

答えて

1

バインドあなたのコンストラクタでchangeStatus方法 -

constructor(props) { 
     super(props); 

     // Set initial state 
     this.state = { 
      data: props.data 
     } 
     this.changeStatus = this.changeStatus.bind(this); 

    } 

結合がhere必要な理由あなたが読むことができます。

+3

これはコメントであるべきです。私はこれに関して多くの同様の記事を見てきました。私たちはそのような投稿を探して、この投稿を閉じて – Rajesh

+0

の代わりに@Rajeshは私に繰り返し言い訳をしてください:( – Aerendir

+1

@Aerendirは今から規律を維持しようとしましょう:-) – Rajesh

1

ES6を使用している場合は、矢印機能を使用してバインドを入力しないでください。

このようにしてthisが自動的に関数にバインドされます。

changeStatus =() => { 
     // This throws: Uncaught TypeError: Cannot read property 'state' of undefined 
     console.log(this.state); 
     console.log('status changed'); 
    } 

Arrow Functions lexically bind their context so this actually refers to the originating context.

関連する問題