• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

react Hook useContext()

武飞扬头像
张瑞东
帮助1

  • useContext

接收一个上下文对象(React.createContext的返回值,可以理解为全局比变量)并返回该上下文的当前值。当前的上下文值由上层组件中距离当前组件最近的属性<MyContext.Provider>决定value。

当上层最近<MyContext.Provider>更新时,该 Hook 会触发重渲染,并使用最新提交给MyContext提供者的上下文value。即使祖先使用React.memo或使用组件,也会在其自身shouldComponentUpdate组件使用useContext时重新渲染。

  • 使用方法:
  1. 创建createContex。
const context = createContext(null);
  1. 使用context.Provider包裹根组件,在value中传入值。
function A () {
  const [count,setCount] = useState(0)
  return(
    // 指定上下文使用范围,使用provider,并传入读数据和写入据
    <context.Provider value={{count, setCount}}>
      这是A组件
      <B></B>
    </context.Provider>
  )
}
  1. 使用useContext接受上下文(上下文可以理解为全局变量),这样子组件就可以使用value中共享的值。
function C () {
  const { count, setCount }= useContext(context)
  return(
    <div>
      这是C组件: {count}  
      <button onClick={() =>  { setCount( count 1 )}}>-</button>
    </div>
  )
}
  • 完整试例
import React, { createContext, useContext, useReducer, useState } from 'react'

// 创造一个上下文
const context = createContext(null);

function A () {
  const [count, setCount] = useState(0)
  return(
    // 指定上下文使用范围,使用provider,并传入读数据和写入据
    <context.Provider value={{count, setCount}}>
      这是A组件
      <B></B>
    </context.Provider>
  )
}

function B () {
  return(
    <div>
      这是B组件
      <C></C>
    </div>
  )
}

function C () {
  const { count, setCount }= useContext(context)
  return(
    <div>
      这是C组件: {count}  
      <button onClick={() =>  { setCount( count 1 )}}>-</button>
    </div>
  )
}
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbjhha
系列文章
更多 icon
同类精品
更多 icon
继续加载