之前使用 React + Redux 写了一个计算功能,现在再来看一个稍微复杂一点的例子。设想有这样一个待办事项列表,用户可以进行的操作为:
- 添加待办事项;
- 更新待办事项为已办事项;
- 删除待办事项;
step1: 定义 state 结构
|
|
定义 state 的结构如上,所有的事项包含在 state.todos 里面,第一个 todo 由 text、index、completed 构成。
step2: 定义 action
|
|
定义三种 action,分别表示 新增,更新,删除。
step3: 定义 reducer
|
|
- ADD_TODO : 新增一个 todo
- REMOVE_TODO : 删除一个 todo
- TOGGLE_TODO : 更新 todo 的状态
上面的代码使用了 Object.assign({}, oldObj, newObj) 来更新拷贝一个对象;
step4: 定义组件并渲染
|
|
上面的组件把所有 待办事项 都列出来,以不同的样式区分待办事项是否已经完成,点击按钮可以添加、删除事项,在事项上点击可以切换事项的完成状态。
style.css
|
|
由于使用到了 style,所以需要在 webpack.config.js 中添加样式处理器 style-loader 和 css-loader。
|
|