Reactjs 如何将React中的localStorage代码转换为React Native中的AsyncStorage?

Reactjs 如何将React中的localStorage代码转换为React Native中的AsyncStorage?,reactjs,react-native,asyncstorage,jsonparser,Reactjs,React Native,Asyncstorage,Jsonparser,我想知道如何使用异步存储将React代码转换为React本机代码。我已经尝试了下面的代码,但是“isAuthenticated”的值为“undefined”,在“JSON.parse(AsyncStorage.getItem('token')”中还有一个“error”。我想使用“isAuthenticated”值仅显示组件的特定部分 反应代码: export const Auth=(状态={ 孤岛加载:false, isAuthenticated:localStorage.getItem('t

我想知道如何使用异步存储将React代码转换为React本机代码。我已经尝试了下面的代码,但是“isAuthenticated”的值为“undefined”,在“JSON.parse(AsyncStorage.getItem('token')”中还有一个“error”。我想使用“isAuthenticated”值仅显示组件的特定部分

反应代码:

export const Auth=(状态={
孤岛加载:false,
isAuthenticated:localStorage.getItem('token')?true:false,
令牌:localStorage.getItem('token'),
用户:localStorage.getItem('creds')?JSON.parse(localStorage.getItem('creds')):null,
errMess:null
},行动)=>{
开关(动作类型){
案例ActionTypes.LOGIN\u请求:
返回{…状态,
孤岛加载:是的,
I认证:错误,
用户:action.creds
};
案例ActionTypes.LOGIN\u成功:
返回{…状态,
孤岛加载:false,
我证实:是的,
呃:'',
令牌:action.token
};
案例ActionTypes.LOGIN\u失败:
返回{…状态,
孤岛加载:false,
I认证:错误,
errMess:action.message
};
案例操作类型。注销请求:
返回{…状态,
孤岛加载:是的,
我被证实:是的
};
案例ActionTypes.LOGOUT\u成功:
返回{…状态,
孤岛加载:false,
I认证:错误,
令牌:“”,
用户:空
};
违约:
返回状态
}
}
是异步的。 使用

const value=await AsyncStorage.getItem('token');

我认为您应该将initialState保留为默认值,使用redux thunk并在应用程序开始时发送一个操作以获取身份验证数据

const getAuth=()=>{
返回异步(调度)=>{
const[token,user]=wait Promise.all([
AsyncStorage.getItem('token'),
AsyncStorage.getItem('creds'))
])
派遣({
键入:“GET_AUTH”,
有效载荷:{
孤岛加载:false,
已验证:!!令牌,
代币
用户:JSON.parse(creds),
errMess:null
}
});
}
}
const App=connect({},{getAuth})({getAuth})=>{
useffect(()=>{
getAuth();
}, [])
返回。。。
})
导出常量auth=async(状态={
孤岛加载:false,
I认证:错误,
令牌:null,
用户:null,
errMess:null
},行动)=>{
开关(动作类型){
案例ActionTypes.GET_AUTH:
返回{
……国家,
…行动.有效载荷
};
...
}

@Samir Kumar试试这个

import { AsyncStorage } from 'react-native';

async functionName(){
  const token = await AsyncStorage.getItem('token');
}

我尝试了上述解决方案,但出现了一个错误:“不能在异步函数外使用关键字'await'”因此,使您的函数异步我已尝试了上述操作。似乎在将令牌保存到AsyncStorage中时出现问题,因此它返回空值。请检查我的loginUser函数。它工作了!!但我必须在auth文件中进行更改-我必须删除ActionTypes.GET_auth中的…action.payload,只保留…state。我不取消明白为什么它在更改后可以工作在返回状态之前您可以
console.log(action.payload)
吗?它工作得很好。即使有…payload。非常感谢!!