React Hook: useContext

本贴最后更新于 1303 天前,其中的信息可能已经时移俗易

React Hook: useContext

介绍

  • React.createContext(默认值): 创建一个 React 的 上下文
    • 默认值:对组件进行单元测试(组件并未嵌入到父组件中)
  • useContext: 获取上下文

应用场景

  • 组件之间需要共享状态(共享值,方法)
  • 父组件 Provider 提供上下文 value
  • 子组件 useContext 解析上下文

Demo

  • 组件
import React, { useContext } from 'react'
import { Context } from './context'

const Children: React.FC = () => {
  const data = useContext(Context)
  // data {id: 2, text: "测试2222", other: "hahah"}
  return <div onClick={() => data?.fun && data?.fun()}>{data.text}</div>
}

const Children2: React.FC = () => {
  const data = useContext<{ id: number; text: string }>(Context)
  // data {id: 2, text: "测试2222", other: "hahah"}
  return <div>{data.text}</div>
}

const Demo: React.FC = () => {
  const newData = { id: 2, text: '测试2222' }

  const testFun = () => {
    console.log('testFun', newData.text)
  }

  return (
    <Context.Provider value={{ ...newData, other: 'hahah', fun: testFun }}>
      <Children />
      <Children2 />
    </Context.Provider>
  )
}

export default Demo
  • context.ts
import { createContext } from 'react'

export const Context = createContext<{
  id: number
  text: string
  other?: string
  fun?: () => void
}>({
  id: 0,
  text: '测试'
})
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 385 关注
  • Hook
    4 引用 • 4 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...