Javascript react本机异步存储不工作
我正在尝试进行身份验证过程,以便我的App.js:Javascript react本机异步存储不工作,javascript,react-native,async-await,asyncstorage,Javascript,React Native,Async Await,Asyncstorage,我正在尝试进行身份验证过程,以便我的App.js: import React, { Component } from "react"; import { AsyncStorage } from "react-native"; import Router from "./Router"; import ScanForm from "./components/ScanForm"; console.disableYellowBox = true; class App extends Compone
import React, { Component } from "react";
import { AsyncStorage } from "react-native";
import Router from "./Router";
import ScanForm from "./components/ScanForm";
console.disableYellowBox = true;
class App extends Component {
state = {
isLoggedIn: false
};
componentWillMount() {
const temp = AsyncStorage.getItem("operator");
console.log(temp);
if (temp !== undefined) {
this.setState({ isLoggedIn: true });
}
}
render() {
if (this.state.isLoggedIn) {
return <ScanForm />;
} else {
return <Router />;
}
}
}
export default App;
但是console.log(temp)代码>再次表示未定义
为什么我不能使用setItem
然后使用getItem
获取数据
提前谢谢
异步存储是异步的:-)。在解析其返回的承诺之前,提交的值不可用。作为对这种不便的交换,它不会在编写过程中阻塞JavaScript线程
如果您尝试:
AsyncStorage.setItem("operator", "John").then(
() => AsyncStorage.getItem("operator")
.then((result)=>console.log(result))
)
你应该得到你所期望的。(这也可以使用异步/等待来完成,如中所示)
您并没有向我们展示如何将道具添加到应用程序中,但如果在上更新值时使用isLoggedIn
更新
的道具,则组件应相应更新。异步存储是异步的:-)。在解析其返回的承诺之前,提交的值不可用。作为对这种不便的交换,它不会在编写过程中阻塞JavaScript线程
如果您尝试:
AsyncStorage.setItem("operator", "John").then(
() => AsyncStorage.getItem("operator")
.then((result)=>console.log(result))
)
你应该得到你所期望的。(这也可以使用异步/等待来完成,如中所示)
您并没有向我们展示如何将道具添加到应用程序中,但如果在上更新值时使用isLoggedIn
更新
的道具,则组件应相应更新。如果找不到该项目,则该项目将未定义我的意思是,当我使用getItem
作为未声明的keyAh时!查看文档(上面链接)。getItem还返回一个承诺。更新答案…在您看来,检查用户是否登录react native的最佳方法是什么?而且,如果用户已经登录,请访问他的登录信息,正如我前面提到的,您不会向我们显示您的状态是如何存储的,或者您是如何为应用程序提供信息的;我会将该项存储在一个持久数据结构中,每当更新时,它都会重新呈现我的组件层次结构。在这种情况下,只需根据道具设置为注销还是用户数据呈现不同的UI即可。我通常使用Redux()和Redux react来存储数据。如果找不到该项,它将是未定义的我的意思是,当我使用getItem
作为未声明的keyAh时!查看文档(上面链接)。getItem还返回一个承诺。更新答案…在您看来,检查用户是否登录react native的最佳方法是什么?而且,如果用户已经登录,请访问他的登录信息,正如我前面提到的,您不会向我们显示您的状态是如何存储的,或者您是如何为应用程序提供信息的;我会将该项存储在一个持久数据结构中,每当更新时,它都会重新呈现我的组件层次结构。在这种情况下,只需根据道具设置为注销还是用户数据呈现不同的UI即可。对于数据存储,我通常使用Redux()和Redux react。