添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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<any>(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 ( <context.Provider value={这里放需要传递的数据}> // 比如 value={{isFullScreen: true, toDoFlag: '1'}} 需要接收数据的子/孙组件 这里的子/孙组件中,如果在嵌套子组件,仍然可以获取共享数据 </context.Provider>

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

子/孙组件:

import React, { useContext } from 'react'; import context from '@/xxx/xxx' const index = () => { const contextParams = useContext(context) // 获取到value,可以在下面进行使用 return ( 创建一个Context对象,当React渲染一个订阅了这个Context对象的组件,这个组件会从组件树中离自身最近的那个匹配的Provider中读取到当前的context值。只有当组件所处的树中没有匹配到Provider时,其才会生效。
一个整合多个reducer的useRedcuer的案例 1.redux-custom.tsx import React, { Context, createContext, useContext, useReducer } from 'react'; * @createContext ProviderContext 一个创建完毕的context const ProviderCon...
context.jsx import React from 'react'; export const Mycontext=React.createContext(); A.jsx import React ,{useContext} from "react"; import {Mycontext} from "./context.jsx"; function A() { const count=useContext(Mycontext) console.log(count); useReducer-使用useReducer-配合useContext使用 欢迎回到我们的useReducer系列第三篇,如果这是你第一次看到这个系列,推荐先看看前两篇: 上篇文章结尾提到过使用useReducer,可以帮助我们集中式的处理复杂的state管理。但如果我们的页面很复杂,拆分成了多层多个组件,我们如何在子组件触发这些state变化呢,比如在Lo...
(1)当组件上层最近的 <MyContext.Provider> 更新时,该 Hook 会触发重渲染,并使用最新传递给 MyContext provider 的 context value 值。 (2)即使祖先使用 React.memo 或 shouldComponentUpdate,也会在组件本身使用 useContext 时重新渲染。 (3)useContext(MyContext) 只是让你能够读取 context 的值以及订阅 context 的变化。你仍然需要在上层组件树中使用 &.
使用createContext进行跨组件间数据传递方法 首先需要在父组件中定义一个容器和需要传递的默认值,然后通过Provider(生产者,简单来说就是定义数据的东西),定义共享的数据,然后通过Consumer(消费者,就是子组件或孙子组件使用),具体实现代码如下: // 在父组件中定义 export const Context = React.createContext({ activeKey...
const Context = React.createContext(); //此时state 就是 count function countReducer(state, action) { switch (action.type) { case "add":