Redux
安装
# NPM
npm install redux
# Yarn
yarn add redux
state
- state就是存放数据的地方
- state数据需要通过
reducer
来管理 - 发起reducer需要通过
dispatch
- dispatch的参数是一个
action
总结来说,state
的修改需要通过dispatch
发起一个action
,然后通过reducers
返回一个新的state。
Action
- action是把数据从应用传到store的有效载荷,是store数据的唯一来源。
- 需要通过
store.dispatch()
将action
传到store
- 格式中type是固定的字段,其他字段可以自定义
// 一个简单的action函数
const ADD_TODO = 'ADD_TODO';
function addTodo(payload) {
return {
type: ADD_TODO, // 这里一般会做成一个常量,避免书写是出错
payload, // 需要传给reducer的数据
}
}
// 用法
dispatch(addTodo(0))
Reducer
Reducers 指定了应用状态的变化如何响应 actions 并发送到 store 的,记住 actions 只是描述了有事情发生了这一事实,并没有描述应用如何更新state。
设计state结构
- 在 Redux 应用中,所有的 state 都被保存在一个单一对象中。
Action 处理
- 需要通过type区分出来需要如何修改数据,调用不同的方法
- 修改state的数据,只能返回新的state,不可以直接修改state的数据
- reducers接受两个参数,一个是state, 一个是action返回的对象
const ADD_TODO = 'ADD_TODO';
// 初始化state
const initialState = {
todos: []
}
// 处理todos部分的数据
function todos(state = [], action) {
switch (action.type) {
case ADD_TODO:
return [