我应该如何在此提取方法中使用asyncstorage.setItem?

时间:2019-07-19 06:02:17

标签: react-native

我想添加异步存储方法来保存我的json响应, 但我不知道如何在其中专门添加

我已经尝试过这样

UserRegisterationFunction = () => {
    const { UserName } = this.state;
    const { UserEmail } = this.state;
    const { UserPassword } = this.state;

    fetch('http://192.168.1.7/test/user_registration.php', {
      method: 'POST',
      headers: {
        'Accept' : 'application/json',
        'Content-Type' : 'application/json'
      },
      body: JSON.stringify({
        name: UserName,
        email: UserEmail,
        password: UserPassword
      })
    }).then((response) => response.json())
            .then((responseJson) => {
              AsyncStorage.setItem('token', responseJson)
              // this._onValueChange(STORAGE_KEY, responseData.id_token),
              Alert.alert(responseJson);
            }).catch((error) => {
              console.log(error)
            });

我成功收到警报,但是我不知道如何添加responseJson或是否正确使用了

2 个答案:

答案 0 :(得分:1)

您可以使用异步系统或不使用异步系统而成功保存。

要异步运行:

            .then(async (responseJson) => {
             await AsyncStorage.setItem('token', responseJson.id_token);
              Alert.alert(responseJson);
            }).catch((error) => {
              console.log(error)
            });

如果您的responseJson数据是这样的:

Object {
   id_token : "myid"
}

使用以下屏幕上的getItem功能检查该值。

async componentDidmount() {
 const tokens = await AsyncStorage.getItem('token');
 alert(tokens); // You can see 'myid'
}

答案 1 :(得分:0)

JSON响应是一个对象,您不能将其直接存储在AsyncStorage中。您只能通过将对象转换为字符串来存储它。

要存储对象:

AsyncStorage.setItem('KEY', JSON.stringify(object))

要检索对象:

const jsonObjectString = AsyncStorage.getItem('KEY')
const jsonObject = JSON.parse(jsonObjectString)