2017-11-14 46 views
0

なぜそれは未定義ですか? foundTodo変数のログをコンソールに書き込もうとすると、そのタスクをクリックするたびにundefineが表示されます。TypeError:未定義のプロパティ 'isCompleted'を読み取ることができません

const todos = [ 
{ 
    task: 'watching react tuts', 
    isCompleted: true 
}, 
{ 
    task: 'eat dinner', 
    isCompleted: false 
} 
]; 


App.js 
     toggleTask(task) { 
     const foundTodo = _.find(this.state.todos, todo => task.todo == task); 

     foundTodo.isCompleted = !foundTodo.isCompleted; 
     this.setState({ todos: this.state.todos }); 
     } 

enter image description here

私は...反応する新たなんだので、私はドスアプリを作成してみてください。

+0

あなたは 'foundTodo'を変更したい場合は、' const'を削除し、 'var'または' let'を使用し、また 'にconsole.log(foundTodoを投稿してください); '; –

+0

letまたはvarを使用してもエラーは未定義です!このコードはonClick 'onClick = {this.props.toggleTask.bind(this、task)}}>' – dextree

+0

console.log(foundTodo);を実行します。 ? –

答えて

1

だけ変更:

todo => task.todo == task 

todo => todo.task == task 
+0

これも私の作品です、申し訳ありません、私はこのフレームワークの初心者でした。とにかくありがとう。 – dextree

+0

@dextree、答えも受け入れてください。 –

1

にあなたの例のコードは、あなたのアプリケーションを持っている、まさに、それはおそらく悪い変数の命名によるものであると仮定すると。あなたは持っている:あなたの矢印機能で

toggleTask(task) { 
    const foundTodo = _.find(this.state.todos, todo => task.todo == task); 
    .. 
} 

todoはPARAMですが、あなたはtask.todo == taskを行います。

それはおそらく次のようになります。

toggleTask(task) { 
    const foundTodo = _.find(this.state.todos, todo => todo.task == task); 
    .. 
} 
+0

ええ、私は今、私が間違って命名規則だけを得る。ありがとう! – dextree

関連する問題