前提前要
在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是全局跨组件调用数据方案之一