出于某种原因,每次我在我的 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' ]);
正如你可以想象的那样,这一直是我的眼中钉。我究竟做错了什么?
任何答案将不胜感激!