如何解决React Native-将侦听器添加到异步存储值更改
您好,我在LoginPage上设置了AsyncStorage.getItem('authStatus')的值,但是问题是Navigator类没有响应AsyncStorage的值更改。如何将侦听器添加到AsyncStorage.getItem('authStatus')?
export default class Navigator extends React.Component {
constructor(props) {
super(props);
this.state = { authStatus: ''}
}
async componentDidMount() {
var authStatus = await AsyncStorage.getItem('authStatus');
**DOESN'T WORK ->** authStatus.addListener(authStatus => {
this.setState(this.state.authStatus = authStatus)
});
console.log("authStatus =")
console.log(this.state.authStatus)
SplashScreen.hide()
}
render() {
return (
(this.state.authStatus == 'authenticated')
?
this.Home()
:
this.AuthStackScreen()
);
}
解决方法
我不知道您是否以正确的方式使用AsyncStorage ...试试这样的事情:
您可以使用AsyncStorage这样存储和检索数据:
const storeData = async (key,value) => {
try {
await AsyncStorage.setItem(key,value);
} catch (error) {
console.log(error);
}
};
const getData = async key => {
try {
const data = await AsyncStorage.getItem(key);
if (data !== null) {
console.log(data);
return data;
}
} catch (error) {
console.log(error);
}
};
然后使用键名调用getData,就像您将值存储在任意位置一样,并将键设置为状态值。
存储值:
storeData("authStatus",the value);
获取值:
await getData("authStatus")
.then((data) => data)
.then((value) => this.setState({ authStatus: value }))
.catch((err) => console.log("AsyncStorageErr: " + err));
,
异步存储是针对您的React Native应用程序的异步,未加密,持久,键值存储解决方案。它不提供任何事件。它返回一个承诺。
参考: https://react-native-community.github.io/async-storage/docs/usage
在您的代码中,“ authStatus”可能包含也可能不包含值。
try {
const authStatus = await AsyncStorage.getItem('')
if(value !== null) {
// value previously stored
this.setState({authStatus})
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。