面试题答案
一键面试Context API
- 基本原理:Context 提供了一种在组件树中共享数据的方式,无需通过 props 层层传递。创建 Context 对象后,上层组件可以通过
Provider
组件将数据注入到组件树,下层组件可通过Consumer
组件或useContext
Hook 获取数据。 - 主要特点:
- 简单直接,适用于局部组件树内共享状态。
- 数据变化直接触发依赖组件更新,没有中间处理逻辑。
Redux
- 基本原理:采用集中式状态管理,应用的状态存储在单一的 store 中。通过 actions 描述状态变化,reducers 根据 actions 纯函数式地更新 state。任何组件要改变状态,需 dispatch 一个 action,store 接收到 action 后,调用 reducer 计算新的 state 并更新视图。
- 主要特点:
- 适合大型应用,有清晰的状态管理流程和可预测性。
- 中间件机制可实现异步操作、日志记录等功能。
- 状态变化逻辑集中,便于调试和维护。
主要差异
- 状态管理粒度:
- Context API 更适合局部组件间状态共享;Redux 适用于整个应用的状态管理。
- 更新机制:
- Context API 数据变化直接触发更新;Redux 通过 dispatch action 按流程更新。
- 复杂度:
- Context API 简单,Redux 有较多概念和流程,相对复杂。
选择场景
- 优先选择 Context API 的场景:
- 局部组件树内共享少量状态,如模态框的显示隐藏。
- 对性能要求高,且不需要复杂状态管理逻辑的场景。
- 优先选择 Redux 的场景:
- 大型应用,状态逻辑复杂,需要集中管理和可预测的状态更新。
- 应用有较多异步操作,需要中间件处理,如 API 调用。
- 团队对 Redux 有经验,且项目对可维护性和调试性要求高。