useContext 详细解析 及与 createContext 搭配使用解决祖孙多层组件之间传参问题
创始人
2024-05-21 06:59:55
0

1. createContext

import { createContext } from 'react'let defaultValue = {}const context = createContext(defaultValue) export default context;

创建一个 Context 对象,当 React 渲染一个订阅了这个 Context 对象的组件,这个组件会从组件树中离自身最近的那个匹配的 Provider 中读取到当前的 context 值。

只有当组件所处的树中没有匹配到 Provider 时,其 defaultValue 才会生效

2. useContext

import { useContext } from 'react'
impor context from '@/xxx/xxx.ts'  // 引入上面创建的 Context 对象const contextParams = useContext(context)

useContext 接收一个 Context 对象(即 React.createContext 的返回值),并返回该 context 的当前值。

  • useContext 可以帮助我们跨越组件层级直接传递变量,实现数据共享。
  • Context 的作用是:对它所包含的组件树提供全局共享数据的一种技术。

3. 使用

可以分为以下三步

1. 在一个单独的 .ts文件中,引入 createContext 方法,并创建 Context 对象、导出

import { createContext } from 'react'let defaultValue = {}const context = createContext(defaultValue) export default context;

2. 在父/祖组件中使用 Provider 组件包裹需要接收数据的子组件,并通过 value 属性提供要共享的数据

父组件:


import { useContext } from 'react'
impor context from '@/xxx/xxx.ts'  // 引入上面创建的 Context 对象return (这里放需要传递的数据}> // 比如 value={{isFullScreen: true, toDoFlag: '1'}}需要接收数据的子/孙组件	这里的子/孙组件中,如果在嵌套子组件,仍然可以获取共享数据
)

3. 在需要获取公共数据的子/孙组件中,使用 useContext方法、Context 对象,得到 value 的值

子/孙组件:


import React, { useContext } from 'react';
import context from '@/xxx/xxx'const index = () => {const contextParams = useContext(context)  // 获取到value,可以在下面进行使用return (<>)
}

相关内容

热门资讯

乐高乐园保姆级攻略来了!收藏这... 转自:上观新闻来源:上观新闻作者:狄斐流程编辑:u028 ...
特朗普签署“大而美”税收和支出... 新华社纽约7月4日电(记者徐兴堂)美国总统特朗普4日下午签署“大而美”税收和支出法案,标志着这一备受...
权威发布|更大范围释放制度创新... 转自:中工网人民日报记者 王珂日前,国务院印发《关于做好自由贸易试验区全面对接国际高标准经贸规则推进...
00后男大学生购买10粒迷奸药... 昨天(7月4日),记者从厦门市中级人民法院获悉,一名在校男大学生通过某迷奸群聊内卖家购买10粒含三唑...
突发:台湾接连地震 根据台湾气象部门消息,7月5日早晨,台湾花莲外海发生两起地震。第一起地震发生在7时12分,震级4.6...
华福证券迎来新任掌舵人!   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! 黄德良,男,1973...
吴晓波×李斌:一场关于中国智能... 来源:吴晓波频道CHANNELWU在全球汽车产业加速变革的今天,中国智能电动汽车产业正以惊人的“中国...
哈萨克斯坦“霍尔果斯-东门”无... 来源:新华社新华社阿拉木图7月4日电(记者郑钰)当地时间4日上午,哈萨克斯坦“霍尔果斯-东门”无水港...
云南就业补贴怎么申请(大学毕业... 为了更好地支持大学生创业,营造良好的创业氛围,促进创业和就业,会泽县计划在2021年选择6个大学生创...
小店面适合哪些小生意(创业小本... 现在人们倾向于做一些小生意,所以他们也想让我们推荐他们。所以今天就和大家分享下五个小生意,让大家如果...