2017-03-25 23 views
1

我的小todo应用程序存在问题。每次我试图删除一个项目有一个错误Cannot read property 'todos' of undefined“这个”在我的类中是undefined

为什么this在里面addTodo约束,但不removeTodo

触发都是在这里完成:<button onClick={() => removeTodo(id)}> X </button>

演示上JSfiddle

感谢。

+0

[Arrow功能VS函数声明/表达式的可能的复制? ](http://stackoverflow.com/questions/34361379/arrow-function-vs-function-declaration-expressions-are-they-equivalent-exch) – Andreas

回答

0

您可以将removeTodo置入属性初始化的箭头函数或使用action.bound修饰符。您还可以使用MobX阵列replace这样你就不会失去参考:

removeTodo = (id) => { 
    var filtered = this.todos.filter(todo => todo.id !== id); 
    this.todos.replace(filtered); 
} 

或者:他们当量/更换:

@action.bound 
removeTodo(id) { 
    var filtered = this.todos.filter(todo => todo.id !== id); 
    this.todos.replace(filtered); 
} 
+1

谢谢你现在正在工作。我只是将'''action.bound()'''添加到我的函数中,并且所有内容都按预期工作。 –

+0

@jonathandion太棒了! – Tholle

相关问题