【发布时间】:2020-11-08 11:52:10
【问题描述】:
所以我有一个问题,我只想在应用程序中只运行一次函数
我只需要将一个空数组初始化一次到异步存储。稍后我将使用 ComponentWillMount() 在数组中执行读写函数...
问题是我如何首先初始化一个空数组,并且我不希望它以后是空的(比如当应用程序关闭和打开时)
每次屏幕渲染时我都会读取存储在异步存储中的数据...但是当第一次屏幕渲染时安装应用程序...我没有调用以下函数
setObjectValue = async () => {
try {
const jsonValue = JSON.stringify(this.state.data)
await AsyncStorage.setItem('Emails', jsonValue)
this.setState({ value : this.state.data.length })
} catch(e) {
// save error
}
console.log('Done.')
}
但如果我在读取之前调用它...它会擦除现有数据并将其设置为一个空数组(因为我有一个具有数据的构造函数:[])所以当我读取数据时我得到一个空数组数组
您可以在此处查看完整代码 - https://snack.expo.io/@belgin/budget-tracker
感谢任何帮助的人:)
【问题讨论】:
-
您已经在读取数组并使用 getMyObject 设置它这里有什么问题?
-
是的,但应用程序第一次运行时它不会(因为我还没有上传任何值)当应用程序第一次渲染屏幕时......它会尝试读取对象尚未在异步存储中初始化(未调用 setObjectValue)
-
是的,但是如果电子邮件在异步存储中不可用,您可以设置一个空数组吗?
-
是的,但是当我每次屏幕渲染时,数组的值都会变为空
-
如果您运行此snack.expo.io/@belgin/budget-tracker ...您可以注意到,当使用 UNSAFE_componentWillMount() 时,新的电子邮件按钮没有给出任何响应...但是当我删除这组代码时.. . 它有效
标签: react-native react-native-android react-navigation react-native-ios react-native-flatlist