• React 的 useContext 的使用


    useContext就是上下文

    什么是上下文呢?

    全局变量就是全局的上下文,全局都可以访问到它;上下文就是你运行一段代码,所要知道的所有变量

    useContext使用的方法:

    1.要先创建createContex

    使用createContext创建并初始化

    const C = createContext(null);
    
    • 1

    2.Provider 指定使用的范围

    在圈定的范围内,传入读操作和写操作对象,然后可以使用上下文

        <C.Provider value={{n,setN}}>
          这是爷爷
          <Baba>Baba>
        C.Provider>
    
    • 1
    • 2
    • 3
    • 4

    3.最后使用useContext

    使用useContext接受上下文,因为传入的是对象,则接受的也应该是对象

    const {n,setN} = useContext(C)
    • 1

    案例:在孙子组件中使用爷爷组件中定义的变量n,并且进行+1操作

    import React, { createContext, useContext, useReducer, useState } from 'react'
    import ReactDOM from 'react-dom'
    
    // 创造一个上下文
    const C = createContext(null);
    
    function App(){
      const [n,setN] = useState(0)
      return(
        // 指定上下文使用范围,使用provider,并传入读数据和写入据
        <C.Provider value={{n,setN}}>
          这是爷爷
          <Baba></Baba>
        </C.Provider>
      )
    }
    
    function Baba(){
      return(
        <div>
          这是爸爸
          <Child></Child>
        </div>
      )
    }
    function Child(){
      // 使用上下文,因为传入的是对象,则接受也应该是对象
      const {n,setN} = useContext(C)
      const add=()=>{
        setN(n=>n+1)
      };
      return(
        <div>
          这是儿子:n:{n}
          <button onClick={add}>+1</button>
        </div>
      )
    }
    
    
    ReactDOM.render(<App />,document.getElementById('root'));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    使用useContext在改变一个数据时,是通过自己逐级查找对比改变的数据然后渲染,而不是通过数据响应式来监控变量的。

    也就是说在点击+1操作后,React开始从function App开始执行代码了

  • 相关阅读:
    Move 学习记录
    UE5 - ArchvizExplorer - 数字孪生城市模板 - 功能修改
    【C++ techniques】限制某个class所能产生的对象数量
    团建游戏----做一只小船去漂流
    vscode优化使用体验篇(设置 | 插件)
    【ComfyUI】RuntimeError: CUDA error: operation not supported
    CAN bus总线静电保护方案
    python数据结构与算法-06_算法分析
    文件打包后输出 - Java实现
    基于ChatGPT的知识图谱构建
  • 原文地址:https://blog.csdn.net/qq_40137978/article/details/126387207