React-Native AsyncStorage:TypeError:无法读取未定义的属性'setItem'

时间:2018-12-18 08:43:30

标签: javascript react-native asyncstorage

我正在学习本机反应,并尝试使用AsyncStorage。我正在使用以下代码存储数据:

_storeData = async (token) => {
    console.log("store token");
    console.log(token);
    try {
      await AsyncStorage.setItem('token', token);
    } catch (error) {
      // Error saving data
      console.log(error);
    }
  }

通过以下方式调用:this._storeData(res.token);

但这给了我这个错误:

> TypeError: Cannot read property 'setItem' of undefined
>     at LoginOrCreateForm._callee$ (blob:http://localhost:8081/21ec2746-a3c9-4c68-937f-ee50c63a6d58:138096:71)
>     at tryCatch (blob:http://localhost:8081/21ec2746-a3c9-4c68-937f-ee50c63a6d58:21408:19)
>     at Generator.invoke [as _invoke] (blob:http://localhost:8081/21ec2746-a3c9-4c68-937f-ee50c63a6d58:21583:24)
>     at Generator.prototype.(anonymous function) [as next] (blob:http://localhost:8081/21ec2746-a3c9-4c68-937f-ee50c63a6d58:21451:23)
>     at tryCatch (blob:http://localhost:8081/21ec2746-a3c9-4c68-937f-ee50c63a6d58:21408:19)
>     at invoke (blob:http://localhost:8081/21ec2746-a3c9-4c68-937f-ee50c63a6d58:21484:22)
>     at blob:http://localhost:8081/21ec2746-a3c9-4c68-937f-ee50c63a6d58:21514:13
>     at tryCallTwo (blob:http://localhost:8081/21ec2746-a3c9-4c68-937f-ee50c63a6d58:22690:7)
>     at doResolve (blob:http://localhost:8081/21ec2746-a3c9-4c68-937f-ee50c63a6d58:22854:15)
>     at new Promise (blob:http://localhost:8081/21ec2746-a3c9-4c68-937f-ee50c63a6d58:22713:5)

有人可以帮我解决我做错的事情吗?谢谢

4 个答案:

答案 0 :(得分:3)

只需确保您已经import { AsyncStorage } from "react-native"

答案 1 :(得分:2)

是因为AsyncStorage未定义,所以请尝试在您的课程顶部导入以下行:

import { AsyncStorage } from 'react-native'

答案 2 :(得分:0)

反应本机功能组件:AsyncStorage挂钩方法

import { useAsyncStorage } from '@react-native-community/async-storage';
---

const { getItem, setItem } = useAsyncStorage('@storage_key');

  const readItemFromStorage = async () => {
    const item = await getItem();
    setValue(item);
  };

  const writeItemToStorage = async newValue => {
    await setItem(newValue);
    setValue(newValue);
  };

参考: https://react-native-community.github.io/async-storage/docs/api#useasyncstorage

答案 3 :(得分:0)

yarn add @react-native-async-storage/async-storage
yarn install

import AsyncStorage from "@react-native-async-storage/async-storage";

来源:

https://react-native-async-storage.github.io/async-storage/docs/api/