react 之 useContext
useContext
概念:useContext 创建上下文,主要是解决组件跨级通信、传值
示例:
步骤1、使用 creatContext 方法创建一个 context 实例对象(通常在组件树的顶层)
import React from 'react'; const MyContext = React.createContext(defaultValue);
备注:这里的 defaultValue 是当组件上层没有匹配的 Provider 时,context 的默认值。
步骤2:使用 Provider 提供值(在组件树中用 Provider 包裹住它的子组件,子组件都能收到provider提供的值)
<MyContext.Provider value={count:1}>
<Child/>
</MyContext.Provider>
备注:provider 所传的值可以是任何数据类型,且当Provider 的 value 发生变化时,所有使用该 Context 的后代组件都会重新渲染
步骤3:子组件里 使用useContext 访问 provider 传的值
import React, { useContext } from 'react'; function Child() { const contextValue = useContext(MyContext); return <div>{contextValue}</div>; }
OK,整个useContext使用步骤基本完成
注意:useContext 不是可以无脑滥用,上面说到 useContext 所传的值变化,下面的所有组件都会重新渲染,这样如果嵌套曾经深、组件复杂的情况下会造成很大的性能开销
解决方案:
1、合理是使用场景:不需要频繁更新的组件使用
2、使用useMemo/useCallBack 等做性能优化
分类:
React 初体验
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2018-09-27 整体页面加载和某一模块加载监听
2018-09-27 程序某一模块加载监听事件和整体网页加载监听
2018-09-27 移动端触摸touchstart监听事件