请描述在 React 应用中采用 Context API 进行数据传递的具体使用方式。
考察说明
考查对 React Context API 基本概念和用法的掌握程度。
回答思路
- 【回答框架 1】Context API 是 React 官方提供的跨组件层级传递数据的方案,无需逐层传递 props,适用于全局主题、登录状态等场景。
- 【回答框架 2】使用步骤包括:通过 createContext 创建上下文对象,在组件顶层使用 Provider 提供 value,在子组件中通过 useContext 或 Consumer 消费数据。
- 【回答框架 3】Provider 的 value 变化时,所有消费该 Context 的组件会重新渲染,无论是否使用 memo 优化。
- 【回答框架 4】为避免不必要的渲染,可将 value 用 useMemo 包裹,或拆分 Context 以减少更新范围。
- 【回答框架 5】对于频繁更新的全局状态,Context 可能不是最优选择,可考虑配合 useReducer 或第三方状态管理库。
- 【关键点 1】创建:const MyContext = React.createContext(defaultValue);
- 【关键点 2】提供:<MyContext.Provider value={...}> 包裹子组件。
- 【关键点 3】消费:函数组件使用 useContext(MyContext),类组件使用 Consumer 或 contextType。
- 【易错点 1】Provider 的 value 每次 render 都会生成新对象,导致所有消费者重渲染,需使用 useMemo 优化。
- 【易错点 2】在没有 Provider 时会使用 createContext 的默认值,而不是 undefined。
- 【易错点 3】Context 不适合用于避免所有重渲染,应谨慎选择使用场景。