使用Redux构造RESTful风格的Actions
用redux管理前端数据流总是要根据业务逻辑定义许多actions,通常这些actions的数据操作并不复杂,无非是更新一个字段或者向数组中插入/删除一个元素,构造一套统一标准的actions可以减少工作量和复杂度。RESTful风格的actions简洁明了,并可以实现大部分资源修改需求。
目标功能
传入store数据结构,自动生成相应的actions。此处以一个todolist为例,config如下:
|
|
在store中创建了formData储存用户输入,进行表单验证;todos储存已添加的代办项。
如果store是Object,例如:
- 更改input的值,调用
actions.formData('UPDATE',{input:'买电影票'})
; - 清空input的值,调用
actions.formData('UPDATE',{input:undefined})
- ……
如果store是Array,例如:
- 当向todos添加待办时,调用
actions.todos('ADD',{id:1, star:false, text:'买电影票'})
; - 当向todos修改待办时,调用
actions.todos('UPDATE',{id:1},{star:true})
; - 当向todos删除待办时,调用
actions.todos('DELETE',{id:1})
; - ……
具体实现
首先,在actionTypes.js中定义资源操作动作:
|
|
实现目标功能:
|
|
需要改进
以上代码可以实现大部分数据流操作,但一些不满足需求的actions(如批量操作)还是需要自己编写。