MST

星途 面试题库

面试题:React 中 Redux 的基本工作流程

请阐述 React 应用中引入 Redux 时,Redux 的基本工作流程,包括 actions、reducers、store 之间是如何相互协作的。
38.3万 热度难度
前端开发React

知识考点

AI 面试

面试题答案

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