React native App.js中的Asyncstorage根据存储值登录
这是我在React native App.js中的Asyncstorage根据存储值登录,react-native,asyncstorage,React Native,Asyncstorage,这是我在app.js中的实现,我试图根据用户是否登录的值有条件地设置初始屏幕 但是在从AsyncStorage返回值之前调用该方法 import React, { Component } from 'react'; import { AsyncStorage } from 'react-native'; import Login from './screens/Login'; import Home from './screens/Home'; import { AppInit } from '
app.js
中的实现,我试图根据用户是否登录的值有条件地设置初始屏幕
但是在从AsyncStorage
返回值之前调用该方法
import React, { Component } from 'react';
import { AsyncStorage } from 'react-native';
import Login from './screens/Login';
import Home from './screens/Home';
import { AppInit } from './utils/AppInit';
export default AppInit({
initScreen: AsyncStorage.getItem("UserDetailsStored").then((value) => { console.log("stored value ", value); value == "false" ? "Login" : "Home" }),
screens: {
Login,
Home,
Screen1,
Screen2,
Profile
}
});
AppInit的代码,使用react native router flux
const AppInit = (screen) => {
return App = () => {
return (
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<NetworkProvider>
<Router>
<Stack key="root">
{_.map(screen.screens, (name, key) => {
return <Scene initial={key == screen.initScreen ? true : false} hideNavBar key={key} component={name} />
})}
</Stack>
</Router>
</NetworkProvider>
</PersistGate>
</Provider>
)
}
}
const AppInit=(屏幕)=>{
返回应用=()=>{
返回(
{{{.map(screen.screens,(名称,键)=>{
返回
})}
)
}
}
我尝试过改变app.js的方法,但也没用。谢谢我建议使用一个额外的屏幕来检查登录 在那里检查异步存储值。因为异步存储需要时间来获取数据 因此,您需要先检查是否提取了数据,然后检查您的登录数据。 若未提取数据,则在检查登录后在屏幕上显示所需的图像、数据或任何内容,并导航到所需的屏幕 请参见此,将此屏幕用作要加载到应用程序中的第一个屏幕 假设我们有
SyncScreen
import React, { Component } from 'react'
import { Text, View, AsyncStorage } from 'react-native'
export default class SyncScreen extends Component {
componentWillMount=()=>{
AsyncStorage.getItem("UserDetailsStored")
.then((value) => {
if(value){
// navigate to somewhere.....
}
else{
// navigate to login..
}
}
),
}
render() {
return (
<View>
<Text> Wait a minute</Text>
</View>
)
}
}
import React,{Component}来自“React”
从“react native”导入{Text,View,AsyncStorage}
导出默认类SyncScreen扩展组件{
组件将装入=()=>{
AsyncStorage.getItem(“UserDetailsStored”)
.然后((值)=>{
如果(值){
//导航到某处。。。。。
}
否则{
//导航到登录。。
}
}
),
}
render(){
返回(
等一下
)
}
}