首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在React本机中设置来自AsyncStorage的AsyncStorage值

在React本机中设置来自AsyncStorage的AsyncStorage值
EN

Stack Overflow用户
提问于 2018-08-13 11:15:17
回答 1查看 4K关注 0票数 2

我已成功地将我的电子邮件和密码值存储在AsyncStorage in ReactNative中。

现在,我还可以在应用程序启动时从AsyncStorage获取值。

我现在正在使用Alert.alert()显示值。

我很困惑如何在我的两个TextInputs中设置这个值:

1.电子邮件和2.密码.

我对国家有一点想法。使用状态可能是可能的。但是怎么做呢?

是否知道如何动态更改或设置TextInput中的值?

谢谢。

编辑

各国:

代码语言:javascript
复制
state = {
    email: '',
    password: '',
    register: false,
    activity: false,
    isRemember:false,
  }



componentWillMount(){
       //To handle Remember Me :
       this._checkForRememberMe();
  }

关于登录成功:

this._storeRememberME()

代码语言:javascript
复制
_storeRememberME=async()=>{
     //SAVING ASYNCSTORAGE VALUE FOR REMEMBER ME : 
     Alert.alert("is Remember state >>"+this.state.isRemember);
     if(this.state.isRemember){
          await AsyncStorage.setItem('username', this.state.email);
      await AsyncStorage.setItem('password', this.state.password);  
  Alert.alert("is Remember state inside >>"+this.state.isRemember);
      await AsyncStorage.setItem('isRemember', 'yes');
   }else{
     const isRemember =AsyncStorage.getItem('rememberMe');
     if(isRemember){
      Alert.alert("Async clear "+this.state.isRemember);
       await AsyncStorage.clear();
     }
   }
  }

  // Fetch the token from storage then navigate to our appropriate place
  _checkForRememberMe = async () => {
    const isRemember = await AsyncStorage.getItem('isRemember');
    if(isRemember){

      const username = await AsyncStorage.getItem('username');
      const password = await AsyncStorage.getItem('password');

      this.state.email=username;
      this.state.password=password;
      this.state.checkedRemember=true;
      Alert.alert(""+this.state.email+""+this.state.password);

    }else{
      this.state.checkedRemember=false;
    }
  }

_handleCheck(val) {

代码语言:javascript
复制
if(val){
  this.state.isRemember=true;
}else{
  this.state.isRemember=false;
}

Alert.alert("is remember", ">>>"+val);

}

复选框如下:

代码语言:javascript
复制
<Checkbox
                onChange={(val) => this._handleCheck(val)}
                    style={{marginRight:8}}
                    checked={checkedRemember}
                    checkedColor={$primaryBlue}
                    uncheckedColor={$lightGray}
                    iconName='matMix'
                />
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-13 11:18:46

您可以在状态下接受一个变量&将该变量设置为TextInput。然后在构造函数中将AsyncStorage值设置为您的状态。因为状态反映到视图中。因此,当您从AsyncStorage获得值时,您将看到TextInput中的值。

对你来说是个很好的例子。

代码语言:javascript
复制
import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  TextInput,
  Button,
  View,
  AsyncStorage
} from 'react-native';

export default class AsyncStorageExample extends Component {

  constructor(props) {
    super(props);
    this.state = {
        myKey: null
    }
  }

  async getKey() {
    try {
      const value = await AsyncStorage.getItem('@MySuperStore:key');
      this.setState({myKey: value});
    } catch (error) {
      console.log("Error retrieving data" + error);
    }
  }

  async saveKey(value) {
    try {
      await AsyncStorage.setItem('@MySuperStore:key', value);
    } catch (error) {
      console.log("Error saving data" + error);
    }
  }

  async resetKey() {
    try {
      await AsyncStorage.removeItem('@MySuperStore:key');
      const value = await AsyncStorage.getItem('@MySuperStore:key');
      this.setState({myKey: value});
    } catch (error) {
      console.log("Error resetting data" + error);
    }
  }

  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          Welcome to Demo AsyncStorage!
        </Text>

        <TextInput
          style={styles.formInput}
          placeholder="Enter key you want to save!"
          value={this.state.myKey}
          onChangeText={(value) => this.saveKey(value)}
          />

        <Button
          style={styles.formButton}
          onPress={this.getKey.bind(this)}
          title="Get Key"
          color="#2196f3"
          accessibilityLabel="Get Key"
        />

        <Button
          style={styles.formButton}
          onPress={this.resetKey.bind(this)}
          title="Reset"
          color="#f44336"
          accessibilityLabel="Reset"
        />

        <Text style={styles.instructions}>
          Stored key is = {this.state.myKey}
        </Text>


      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    padding: 30,
    flex: 1,
    alignItems: 'stretch',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  formInput: {
    paddingLeft: 5,
    height: 50,
    borderWidth: 1,
    borderColor: "#555555",
  },
  formButton: {
    borderWidth: 1,
    borderColor: "#555555",
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
    marginTop: 5,
  },
});

AppRegistry.registerComponent('AsyncStorageExample', () => AsyncStorageExample)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51821078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档