创建Store
Store可以响应Action的行为,并同服务器交互。
监听单个Action
在init方法中添加监听处理
var addItem = Reflux.createAction();
var TodoStore = Reflux.createStore({
init: function () { this.listenTo(addItem, 'addItem'); }, addItem: function (model) { console.log(model); } }); addItem({name: 'xxx'});
监听多个Action
作死写法
var TodoActions = Reflux.createActions([
'addItem',
'deleteItem'
]);
var TodoStore = Reflux.createStore({ init: function () { this.listenTo(TodoActions.addItem, 'addItem'); this.listenTo(TodoActions.deleteItem, 'deleteItem'); }, addItem: function (model) { console.log(model); }, deleteItem: function (model) { console.log(model); } }); TodoActions.addItem({name: 'xxx'}); TodoActions.deleteItem({name: 'yyy'});
两个action的时候在init里写了两遍监听处理方法,如果有十个甚至多个的话,写起来就像这样的:
var TodoActions = Reflux.createActions([
'item1',
'item2',
'item3', 'item4', 'item5', 'item6', 'item7', 'item8', 'item9', 'item10' ]); var TodoStore = Reflux.createStore({ init: function () { this.listenTo(TodoActions.item1, 'item1'); this.listenTo(TodoActions.item2, 'item2'); this.listenTo(TodoActions.item3, 'item3'); this.listenTo(TodoActions.item4, 'item4'); this.listenTo(TodoActions.item5, 'item5'); this.listenTo(TodoActions.item6, 'item6'); this.listenTo(TodoActions.item7, 'item7'); this.listenTo(TodoActions.item8, 'item8'); this.listenTo(TodoActions.item9, 'item9'); this.listenTo(TodoActions.item10, 'item10'); }, item1: function (model) { console.log(model); }, item2: function (model) { console.log(model); } }); TodoActions.item1({name: 'xxx'}); TodoActions.item2({name: 'yyy'});
listenToMany
还好Reflux给我们提供了listenToMany方法,避免重复劳动:
var TodoActions = Reflux.createActions([
'item1',
'item2',
'item3', 'item4', 'item5', 'item6', 'item7', 'item8', 'item9', 'item10' ]); var TodoStore = Reflux.createStore({ init: function () { this.listenToMany(TodoActions); }, onItem1: function (model) { console.log(model); }, onItem2: function (model) { console.log(model); } }); TodoActions.item1({name: 'xxx'}); TodoActions.item2({name: 'yyy'});
处理方法只需让action的标识首字母大写并加上on就可以了。
标识如果首字母大写就会识别不了,例如将上面的item1改成Itme1。这坑爹的!