我有一个Fire类,如果用户未连接,uid
将返回undefined,如果用户已连接,则返回字符串(他的uid)。
有时候我的渲染依赖于此。
例如:
const [auth, setAuth] = useState<undefined|string>(Fire.shared.uid);
[...]
<Text>{(auth == undefined) ? "not authentificated" : "great")}</Text>
我们可以想象用户没有连接,因此文本为not authentificated
。
现在,他将登录或在其他页面注册,因此Fire
类中的uid变量将更改。
那么我该如何更改状态值?
没有useState全局之类的东西吗?
谢谢。
答案 0 :(得分:2)
您应该使用上下文:
page-context.js
export const PageContext= React.createContext();
app.js
const App = () => {
const [auth, setAuth] = useState<undefined|string>(undefined);
return(
<PageContext.Provider value={[auth, setAuth]}>
<NavigationContainer> // your routes
</PageContext.Provider>)
OtherScreen.js
function OtherScreen() {
const [auth] = useContext(PageContext);
return (<Text>{(auth == undefined) ? "not authentificated" : "great")}</Text>)
}
Sign.js
function Sign() {
const [auth, setAuth] = useContext(PageContext);
return (<Button onPress={()=>setAuth("myUid)} />)
}
答案 1 :(得分:1)
您可以使用react js上下文api来具有以下功能:https://reactjs.org/docs/context.html#updating-context-from-a-nested-component,
或者您可以使用第三方库(例如redux或mobx)来具有全局状态
redux:https://redux.js.org/ mobx:https://mobx.js.org/README.html