- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 React 原生环境的新手,我正在尝试构建一个应用程序,我在其中使用 AsyncStorage 来保存用户首选项。
我无法保存/获取任何东西并且低于警告,例如,
[Unhandled promise rejection: TypeError: _reactNative.default.getItem is not a function. (In '_reactNative.default.getItem('name')', '_reactNative.default.getItem' is undefined)]
Stack trace:
src\components\Settings\Settings.js:62:39 in _callee$
node_modules\regenerator-runtime\runtime.js:45:44 in tryCatch
node_modules\regenerator-runtime\runtime.js:271:30 in invoke
node_modules\regenerator-runtime\runtime.js:45:44 in tryCatch
node_modules\regenerator-runtime\runtime.js:135:28 in invoke
node_modules\regenerator-runtime\runtime.js:170:17 in <unknown>
node_modules\promise\setimmediate\core.js:45:7 in tryCallTwo
node_modules\promise\setimmediate\core.js:200:23 in doResolve
node_modules\promise\setimmediate\core.js:66:12 in Promise
node_modules\regenerator-runtime\runtime.js:169:27 in callInvokeWithMethodAndArg
node_modules\regenerator-runtime\runtime.js:192:38 in enqueue
node_modules\regenerator-runtime\runtime.js:216:8 in async
src\components\Settings\Settings.js:60:16 in _callee
src\components\Settings\Settings.js:13:2 in componentDidMount
node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:15036:10 in commitLifeCycles
node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:16636:8 in commitAllLifeCycles
注意:我在 setItem 和 getItem 方法中都收到此警告....
loadDefaults = async () => {
AsyncStorage.setItem('name','TEST');
let val = await AsyncStorage.getItem('name');
console.log("val > " + val);
我的 package.json 文件,
{
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web",
"eject": "expo eject"
},
"dependencies": {
"expo": "^35.0.0",
"expo-haptics": "^7.0.0",
"react": "16.8.3",
"react-dom": "16.8.3",
"react-native": "https://github.com/expo/react-native/archive/sdk-35.0.0.tar.gz",
"react-native-circular-progress": "^1.3.3",
"react-native-easy-grid": "^0.2.2",
"react-native-gesture-handler": "^1.3.0",
"react-native-reanimated": "^1.3.0",
"react-native-svg": "^9.13.3",
"react-native-web": "^0.11.7",
"react-navigation": "^4.0.10",
"react-navigation-drawer": "^2.3.2",
"react-navigation-stack": "^1.10.3",
"react-navigation-tabs": "^2.5.6"
},
"devDependencies": {
"babel-preset-expo": "^7.1.0"
},
"private": true
}
完整的组件代码库
import React from 'react';
import { View, Text,Switch, StyleSheet, Platform, Alert } from 'react-native';
import { TextInput, TouchableOpacity } from 'react-native-gesture-handler';
import { colors } from '../../themes';
import AsyncStorage from 'react-native';
export default class Settings extends React.Component {
componentDidMount() {
this.loadDefaults();
}
constructor(props) {
super(props);
this.state = {
input:''
};
this.savePref = this.savePref.bind(this);
this.onTxtChange = this.onTxtChange.bind(this);
this.styles = StyleSheet.create({
container: {
//paddingTop: 23
},
text: {
marginLeft:20,
margin: 10
},
input: {
marginLeft: 10,
marginRight: 10,
height: 40,
borderColor: colors.primary,
borderWidth: 1,
padding: 10,
paddingLeft:20,
borderRadius:10
},
submitButton: {
backgroundColor: colors.primary,
padding: 10,
margin: 10,
height: 40,
borderRadius:10
},
switchContainer: {
flexDirection:'row'
}
});
}
loadDefaults = async () => {
AsyncStorage.setItem('name','TEST');
let val = await AsyncStorage.getItem('name');
console.log("XXXXXX > " + val);
}
onTxtChange = (val) => {
this.setState({input: val});
}
savePref = () => {
AsyncStorage.setItem("input", this.state.input);
this.showAlert();
}
showAlert = () => {
Alert.alert(
'Preferences',
'Your preferences have been saved.',
[
{text: 'OK'},
],
{cancelable: false}
);
}
render() {
return (
<View style={this.styles.container}>
<Text style={this.styles.text}>Input: </Text>
<TextInput style={this.styles.input}
placeholder="Enter input"
placeholderTextColor={colors.grayFontColor}
keyboardType="number-pad"
value={this.state.input}
/>
<TouchableOpacity
style={this.styles.submitButton}
onPress={this.savePref}
>
<Text style={{alignSelf:'center', color: '#fff'}}> Save </Text>
</TouchableOpacity>
</View>
);
}
}
最佳答案
您正在默认导入 AsyncStorage。您需要为此使用大括号。
替换为:
import AsyncStorage from 'react-native';
有了这个:
import { AsyncStorage } from 'react-native';
关于javascript - expo AsyncStorage 方法不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58618640/
我正在开发一个使用 Expo 创建的 React Native 项目。我一直在使用普通的旧 AsyncStorage , 从 react-native 导入,一切都很好。 在查找如何模拟 AsyncS
我正在使用 AsyncStorage在 React Native 中,但我的问题总是出错 _reactNative.AsyncStorage.setItem is not a function 当我使
出了什么问题: Execution failed for task ':app:multiDexListDebug'. > A failure occurred while executing com
我有一个基于卡片的应用程序(左右滑动) 当我向左或向右滑动时,我会为其分配功能。 SwipeRight:(向右移动时执行的功能) storeInLevel1(props.id) removeFromL
我已经查看了有关 asyncStorage 的文档,但不明白为什么它没有保存我的数据。我将 Laravel 用于 API 和 Vue native(react-native 的包装器)。当用户注册时,
我有一个带有记住我的按钮的登录屏幕,当我连接时,我想将此信息存储在 asynsctorage 中,如下所示: if (this.isFormValid()) { AccountSe
如果这个问题是语法错误或类似的问题,请原谅我,我是 React-Native 的新手,还有很多东西需要学习。 我按照文档尝试了 AsyncStorage,但它返回了一个错误。 class iCare
如何在“componentDidMount”处获取 AsyncStorage 项目,这里是我的代码 componentDidMount() { AsyncStorage.getItem('custom
我正在使用 expo 和 react-native我正在尝试使用 AsyncStorage 在持久存储中保存 3 个值这样我就可以从应用程序的任何地方获取它,但是 asyncstorage 不保存或检
我有一个 react-native我计划重新编写所有代码库的项目,新的源代码。我打算使用相同的包ID。 所以我的客户,他们希望用户会收到有关新应用程序版本的通知。在他们更新后,登录状态将保持 ,因此用
我正在使用 redux-persist在一个 react native 项目中,它在大量设备上运行得很好除了 Android 7 .我正在尝试调试为什么我的本地存储也不持久的问题,并发现了这一点: 以
我想在我的 React Native 应用程序中保留用户的帐户凭据(即用户名和密码)。我应该使用 AsyncStorage ? 换句话说,我想知道是否以及如何AsyncStorage保护其内容。 do
我正在尝试从异步存储中获取项目。 componentDidMount() { console.log('componentDidMount') AsyncStorage.getItem
我的应用程序从网络服务器下载图像并保存它们,但我不确定将它们保存在哪里,是否有图像的本地存储? 谢谢 最佳答案 试试 rn-fetch-blob 你可以 创建文件 删除文件 创建目录 读取文件 下载文
我无法使用 AsyncStorage setItem。以下是我的代码。因此,我从 TextInput 获取状态名称,然后将其存储在 TouchableOpacity 的 AsyncStorage on
我是 React 原生环境的新手,我正在尝试构建一个应用程序,我在其中使用 AsyncStorage 来保存用户首选项。 我无法保存/获取任何东西并且低于警告,例如, [Unhandled promi
有什么方法可以同步我通过asyncStorage获取的数据吗? 我在 BaseAction.js 中获取数据 import { AsyncStorage } from 'react-native';
我有一个react-native应用程序,我在其中调用一个api,它应该返回JSON,但我只是未定义。 export function fetchFromAPI() { AsyncStorage.
我试图用这个存储日期:https://github.com/react-native-community/datetimepicker 问题是我希望将日期保存在 AsyncStorage 中,可能还存
如何在 Asyncstorge 中设置多个值?因为我正在尝试设置 token和 user_id .这些是服务器响应值。 这就是响应的样子 json { error: 0, data: 'User
我是一名优秀的程序员,十分优秀!