Reactjs 反应导航状态重置
当我在web上刷新页面时,导航状态将丢失,因此无法返回。我想做的是,如果我刷新页面,导航状态不会丢失。我尝试的是按照以下文档将状态持久化到本地存储:Reactjs 反应导航状态重置,reactjs,react-navigation,react-navigation-v5,react-navigation-stack,react-native-web,Reactjs,React Navigation,React Navigation V5,React Navigation Stack,React Native Web,当我在web上刷新页面时,导航状态将丢失,因此无法返回。我想做的是,如果我刷新页面,导航状态不会丢失。我尝试的是按照以下文档将状态持久化到本地存储: useEffect(() => { /** * Get and sets the persisted navigation state so * the user is immediately returned to the same location after the app is restarted.
useEffect(() => {
/**
* Get and sets the persisted navigation state so
* the user is immediately returned to the same location after the app is restarted.
*/
const restoreState = async (): Promise<void> => {
try {
const initialUrl = await Linking.getInitialURL();
if (initialUrl == null) {
const savedStateString = await AsyncStorage.getItem(PERSISTENCE_KEY);
const state = savedStateString
? JSON.parse(savedStateString)
: undefined;
if (state !== undefined) {
setInitialState(state);
}
}
} finally {
setIsReady(true);
}
};
if (!isReady) {
restoreState();
}
}, [isReady]);
useffect(()=>{
/**
*获取并设置持久化导航状态,以便
*应用程序重新启动后,用户会立即返回到同一位置。
*/
const restoreState=async():Promise=>{
试一试{
const initialUrl=await Linking.getInitialURL();
if(initialUrl==null){
const savedStateString=await AsyncStorage.getItem(持久性密钥);
const state=savedStateString
?JSON.parse(savedStateString)
:未定义;
如果(状态!==未定义){
setInitialState(状态);
}
}
}最后{
setIsReady(真);
}
};
如果(!isReady){
恢复不动产();
}
},[isReady]);
这就是我的容器的外观:
<NavigationContainer
linking={linking}
theme={true ? navigationTheme.light : navigationTheme.dark}
initialState={initialState}
onStateChange={(state) => state && handleNavigationChange(state)}
ref={navigation}>
state&&handleNavigationChange(state)}
ref={navigation}>
consthandlenavigationchange=async(状态:NavigationState):Promise=>{
等待AsyncStorage.setItem(PERSISTENCE_KEY,JSON.stringify(state));
};
在本地存储中保存状态后,您面临的问题是什么?@Srishti刷新页面时导航状态丢失,但导航状态确实在本地存储中保存
const handleNavigationChange = async (state: NavigationState): Promise<void> => {
await AsyncStorage.setItem(PERSISTENCE_KEY, JSON.stringify(state));
};