@react-native-community/async-storage ^1.6.1调用方法时报错求助
解决@react-native-community/async-storage调用时报错TypeError的问题
嘿,我一眼就瞅出问题在哪了——你用错了这个社区版AsyncStorage的导入方式!在你使用的@react-native-community/async-storage@1.6.1版本里,它是默认导出,不是你现在用的命名导出。你写的import { AsyncStorage } from '@react-native-community/async-storage'会让你拿到的AsyncStorage变成undefined,调用它的方法自然就会抛出那个类型错误了。
直接解决办法
把你的导入语句改成默认导入就行:
import AsyncStorage from '@react-native-community/async-storage';
改完之后,你原来的AsyncStorage.setItem('locale', locale)和AsyncStorage.getItem('user')这些调用代码完全不用动,就能正常工作了。
为啥从'react-native'导入能行?
因为原生React Native里的旧版AsyncStorage是命名导出,所以你用import { AsyncStorage } from 'react-native'能拿到正确的对象,但它确实已经被官方标记为弃用,社区版才是现在推荐的替代方案。
要是改了导入还是不行?试试这两步
- 确认依赖链接正常:如果你用的是React Native 0.60以下版本,安装依赖后需要手动运行
react-native link @react-native-community/async-storage;0.60+版本是自动链接的,但保险起见可以重启一下metro bundler和你的模拟器/真机。 - 清理metro缓存:运行
npx react-native start --reset-cache,有时候缓存会导致模块导出异常,清完缓存再重新跑项目试试。
这样调整后,你就能安心用社区版AsyncStorage,再也不会看到弃用警告,也不会有那个烦人的类型错误啦。
内容的提问来源于stack exchange,提问作者SimonartM
相关产品推荐
相关产品推荐

