快速入门useContext。使用TS

1,503 阅读1分钟

一 useContext

为什么要使用Context? 因为有些属性是全局需要的。比如主题。你一个App确定了主题,下面一个left组件需要用,left里面的item也要用。 useContext可以在任何子组件,直接访问祖先组件提供的state。 下面一个例子带大家快速入门useContext

一 在App.tsx中

1 建立模板

export default ( )=> {
   return (<div>

    </div>)
}

2 定义要传输的数据

interface Icontex {
  count: number
}

3 向外导出context对象,让子组件接收 context里面有一个Provider对象,需要用这个包裹需要state的子元素,并传入vlaue值,就是你要传入的数据

export const context = React.createContext({} as Icontex)

4 使用Provider包裹子组件

export default () => {
  return (
    <context.Provider
    // Provider有一个value属性需要你传入你要共享的数据
      value={{
        count: 1
      }}
    >
    // --- Child组件在Provider中
      <Child/>
    </context.Provider>
  )
}

5 最后的总体代码

import React, { useContext } from 'react'
import Child from './Components/Child'
// 1 定义要传输的数据
interface Icontex {
  count: number
}
// 2 向外导出context对象,让子组件接收
export const context = React.createContext({} as Icontex)

export default () => {
  return (
    <context.Provider
    // 3 传入你定义的数据对象
      value={{
        count: 1
      }}
    >
      <Child/>
    </context.Provider>
  )
}

二 在child子组件中,

使用useContext获得共享的数据

import { context } from "../App"
import { useContext } from "react"
export default ( )=> {
 //使用useContext获得父组件的值
  const value = useContext(context)
   return (<div>
     父组件传入的数据----{value.count}
    </div>)
}

最终效果

image.png

以上,是一个简单的useContext例子