useContext ——React 个人学习笔记(7)

73 阅读1分钟

useContext

好像就是用来跨组件传数据,类似Vue的Provide,Inject

使用

创建Context

  const MyContext = React.createContext(defaultValue)

defaultValue是当组件不存在任何ContextProvider时的初始值,可以用null 但是官方建议提供一个有意义的值

那我不管

使用Context Provider

<MyContext.Provider value={{ name: 'John' }}>
      {/* 子组件 */}
    </MyContext.Provider>

在子组件中使用

import { useContext } from 'react'
import { MyContext } from './use-context'

function Child() {
  const contextValue = useContext(MyContext)
  return (
    <>
      {contextValue.toString()}
    </>
  )
}

export default Child

感觉要专门建个文件处理这些context

动态修改context

import React from 'react'
import Child from './child'

export const MyContext = React.createContext(false)

function Context() {
  const [value, setValue] = React.useState(false)
  return (
    <MyContext.Provider value={value}>
      <button onClick={() => setValue(!value)} type="button">
        测试动态context值
      </button>
      <Child />
    </MyContext.Provider>
  )
}
export default Context

好像还说有性能问题,但是现在我先不管