使用localstorage在反应本地上使用REDUX初始状态的问题



我正在开发一个 react-native应用程序,带有 exporeduxreact-native-sync-localstorage,将应用程序状态存储在LocalStorage上,以便下次启动应用程序,作为与API,当前通信的标志用户等

我将测试初始启动并从本地存储中加载状态,然后传递给redux

export default store = createStore(rootReducer, LocalStorage.find('state'))

如果不存在state.profile.token,则应用程序将在登录屏幕上启动,如果存在state.profile.token,则该应用程序将从主屏幕开始。

如果在加载状态之前,我将硬编码状态插入LocalStorage,并带有令牌,用户信息该应用程序从MAIN启动,那是正确的行为:

LocalStorage.insert('state', {
  profile: { current: { id: 1, type: 'staff', name_type: 'Personal' },
    token: 'Mx2msERuY6342enWEtD2',
    user: { id: 1, name: 'Ezequiel', surname: 'Depetris',gender: 'male' }
  }
}
export default store = createStore(rootReducer, initialState)

但是,当我在控制台上运行exp build:android,然后在Android电话上运行应用程序时,即使用户当前已加载了用户,状态也永远不会加载,并且始终从登录屏幕开始。

确定哪个屏幕渲染的文件是下一个:

...
const initialRoute = () => {
  if (store.getState().profile.token != null)
    return 'Main'
  else
    return 'LogIn'
}
const Router = createSwitchNavigator({
  LogIn: {
    screen: LogInScreen
  },
  Main: {
    screen: MainNavigator
  }
}, {
  initialRouteName: initialRoute(),
  headerMode: 'none',
  mode: 'modal'
})
...

我有权在Android清单上设置的Android存储器上写入和阅读,然后将请求放在LogInScreen上为:

...
  async componentWillMount() {
    await requestStoragePermission()
  }
...

requestStoragePermission.js

...
export async function requestStoragePermission() {
  const { status } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
}

好吧,我的解决方案是使用 import { AsyncStorage } from "react-native",这是通过expo提出的存储,我一直是mongo的扩展,此后我尝试了react-native-sync-localstorage,但我认为您只有授权使用由博览会或其他可以与Expo一起使用的存储

提出的存储空间

相关内容

  • 没有找到相关文章

最新更新