ReactHooks(useContext)

39 阅读1分钟

前提前要

在React中操作或者存储,数据是这么几个。useMemo缓存结果,useContext上下文,Mobx状态管理,从以往的框 架来说,比如pinia它也是状态管理工具,但也是存储库,还有Vuex也是状态管理工具但是也加了库。但是从原理 上讲,Mobx是单向数据流,Vuex是环形单向数据流,Pinia是存储库,Pinia是存储在内存中的,浏览器刷新就会丢失。Mobx是单向数据流也就是类似JavaBean一样,具有getter和setter一样。方法Asetter进Mobx,方法B就能Getter数据,同时A与B具有高度关联性。当然,你也可以吧缓存,localStorage存储,body,param,header等等存储,协调数据层封装起来起来

useContext

useContext依赖React.CreateContext。

全局管理文件

    // ThemeContext.tsx
   export const ThemeContext=React.CreateContext({
       name:"张三"age:13
   })

组件入口(以RN expo为例)

    // ComponetsA.tsx
    import {ThemeContext} from "ThemeContext.tsx"
    import React,{useContext} from "react"
    
    export default ComponentA({childer}:any}){
      const theme=useContext(ThemeContext)
      return (
          <ThemeContext.Provider value={theme.name}>
              {childer}
          </ThemeContext.provider>
      )
    }
    

根组件

    export default RootLayout(){
        return (
            <ComponetA>
               <stack/>
            </ComponetA>
        )
    }

任意组件

import {ThemeContext} from "ThemeContext.tsx"

export default xxxx(){
    const theme=useContext(ThemeContext)
    console.log(theme.name)
}

综上useContext是全局跨组件调用数据方案之一