React native 响应本机存储数据异步存储
你好,我用的是react native。我想将开关按钮保存为true或false,但它没有。当我打开和关闭应用程序时,不会加载记录的数据。问题在哪里。它不保存真或假React native 响应本机存储数据异步存储,react-native,React Native,你好,我用的是react native。我想将开关按钮保存为true或false,但它没有。当我打开和关闭应用程序时,不会加载记录的数据。问题在哪里。它不保存真或假 class LoginForm extends Component { toggleRememberMe = value => { this.setState({ rememberMe: value }) if (value === true) { this.rememberUser(); } e
class LoginForm extends Component {
toggleRememberMe = value => {
this.setState({ rememberMe: value })
if (value === true) {
this.rememberUser();
} else {
this.forgetUser();
}
}
rememberUser = async () => {
try {
await AsyncStorage.setItem('123123', this.state.remem);
} catch (error) {
// Error saving data
}
};
getRememberedUser = async () => {
try {
const username = await AsyncStorage.getItem('123123');
if (username !== null) {
return username;
}
} catch (error) {
}
};
forgetUser = async () => {
try {
await AsyncStorage.removeItem('123123');
} catch (error) {
}
};
constructor(props) {
super(props)
const remem = this.getRememberedUser();
this.state = {
remem: remem || "",
rememberMe: remem ? true : false
}
}
render() {
return (<Switch
value={this.state.rememberMe}
onValueChange={(value) => this.toggleRememberMe(value)}
/><Text>Remember Me</Text>);
}
类LoginForm扩展组件{
ToggleMemberme=值=>{
this.setState({rememberMe:value})
如果(值===true){
这个;
}否则{
这个。伪造者();
}
}
rememberUser=async()=>{
试一试{
等待AsyncStorage.setItem('123123',this.state.remem);
}捕获(错误){
//保存数据时出错
}
};
GetMemberedUser=async()=>{
试一试{
const username=await AsyncStorage.getItem('123123');
如果(用户名!==null){
返回用户名;
}
}捕获(错误){
}
};
forgetUser=async()=>{
试一试{
等待AsyncStorage.removeItem('123123');
}捕获(错误){
}
};
建造师(道具){
超级(道具)
const remem=this.getMemberedUser();
此.state={
remem:remem | |“,
记住:记住?对:错
}
}
render(){
返回(this.togglememberme(value)}
/>记住我);
}
您必须在componentDidMount
中获取MemberedUser()
现在您有一个异步函数,您正试图在异步上下文之外执行该函数
比如:
async componentDidMount() {
const remem = await this.getRememberedUser();
if (remem) {
this.setState({rememberMe: remem})
}
}
您必须在
componentDidMount
中获取membereduser()
现在您有一个异步函数,您正试图在异步上下文之外执行该函数
比如:
async componentDidMount() {
const remem = await this.getRememberedUser();
if (remem) {
this.setState({rememberMe: remem})
}
}
您的rememberUser()
方法可能在状态更新之前被调用<代码>设置状态()是一种异步操作。在rememberMe
设置为您要设置的值后,尝试更新asyncStore:
toggleRememberMe = value => {
this.setState({ rememberMe: value }, ()=>{
if (value === true) {
this.rememberUser();
} else {
this.forgetUser();
}
})
}
您的rememberUser()
方法可能在状态更新之前被调用<代码>设置状态()是一种异步操作。在rememberMe
设置为您要设置的值后,尝试更新asyncStore:
toggleRememberMe = value => {
this.setState({ rememberMe: value }, ()=>{
if (value === true) {
this.rememberUser();
} else {
this.forgetUser();
}
})
}
我已经创建了一个供您查看的。基本上,将AsyncStorage移动到componentDidMount并删除了一些内容(例如使用状态设置AsyncStorage,这是必需的,因为setState是异步的,并且您的值不是预期值)我创建了一个示例供您查看。基本上,将AsyncStorage移动到componentDidMount并删除了一些内容(例如使用状态设置AsyncStorage,这是必需的,因为setState是异步的,并且您的值不能达到预期值)它确实有效。这就是你所有的密码吗?也许还有别的办法可以用。这就是你所有的密码吗?也许还有别的事