出于某种原因,每次我在我的 react 组件中触发一个动作时,与该动作关联的 store 方法都会触发两次。使用 Firefox 调试器,我注意到事件发射器似乎“发射”了两次动作,尽管事实上我只调用了一次动作(onClick)。
零件
var TodoHead = React.createClass({
添加项目:函数(e){
var todo = this.refs.TodoInput.getDOMNode().value;
TodoActions.addTodoItem(todo);
// 表示待办事项对象/数组发生了变化
TodoActions.todoItemsChanged();
},
删除项目:函数(){
TodoActions.removeItem();
TodoActions.todoItemsChanged();
},
渲染:函数(){
返回 (
// 触发上述方法 onClick 的按钮
);
}
});
回流商店
var todoItems = [];
变种 API = {
addTodoItem:功能(项目){
调试器;
如果(项目!=“”){
todoItems.push(item);
}
},
删除待办事项:函数(){
todoItems.pop();
},
}
var TodoStore = Reflux.createStore({
初始化:函数(){
this.listenTo(TodoActions.addTodoItem,API.addTodoItem);
this.listenTo(TodoActions.removeItem,API.removeTodoItem);
},
获取待办事项:函数(){
返回待办事项;
},
});
反流动作
var TodoActions = Reflux.createActions([
'添加待办事项',
'除去项目',
'todoItemsChanged'
]);
正如你可以想象的那样,这一直是我的眼中钉。我究竟做错了什么?
任何答案将不胜感激!