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 等做性能优化

 

posted @   尼古拉斯-富贵  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2018-09-27 整体页面加载和某一模块加载监听
2018-09-27 程序某一模块加载监听事件和整体网页加载监听
2018-09-27 移动端触摸touchstart监听事件
点击右上角即可分享
微信分享提示