面试题答案
一键面试- Actions(动作):
- Actions 是 Redux 中发起状态变化的唯一方式。它是一个普通的 JavaScript 对象,包含一个
type
字段,用于描述要执行的动作类型,还可以包含其他数据字段,称为 payload。例如:
const addTodo = { type: 'ADD_TODO', payload: 'Learn Redux' };
- Actions 是 Redux 中发起状态变化的唯一方式。它是一个普通的 JavaScript 对象,包含一个
- Reducers(减速器):
- Reducers 是一个纯函数,它接收两个参数:当前状态(state)和一个 action。根据 action 的
type
来决定如何更新状态。 - 它永远不会直接修改状态,而是返回一个新的状态。例如:
const initialState = { todos: [] }; const todoReducer = (state = initialState, action) => { switch (action.type) { case 'ADD_TODO': return { ...state, todos: [...state.todos, action.payload] }; default: return state; } };
- Reducers 是一个纯函数,它接收两个参数:当前状态(state)和一个 action。根据 action 的
- Store(仓库):
- Store 是 Redux 应用的核心,它保存着整个应用的状态树。
- 可以通过
createStore
方法创建,接受一个 reducer 作为参数。例如:
import { createStore } from'redux'; const store = createStore(todoReducer);
- Store 提供了一些方法,如
getState()
用于获取当前状态,dispatch(action)
用于分发 action 来触发状态变化。
- 协作流程:
- 应用中某个地方触发一个 action,例如通过用户点击按钮等操作。
- 这个 action 被
dispatch
到 store 中。 - Store 接收到 action 后,会将当前状态和这个 action 传递给 reducer。
- Reducer 根据 action 的
type
计算出新的状态并返回。 - Store 更新它保存的状态,并且如果有订阅者(如 React 组件通过
connect
等方式订阅了状态变化),会通知这些订阅者状态已改变,以便它们重新渲染以反映最新的状态。