为什么我的数组会在我离开函数时自行重置?
Why my array resets itself when I leave my function?
我在整整两天没有成功后来到这里。
我想用用户选择的图片增加我的数组,因为 return 到我的数据库 uri 列表。但是当用户选择第一张图片并重新打开 android 导航器拍摄新照片时,我看到数组没有增加。
它采用第一个值,当我离开 selectImage() 方法时它又变回空。
这是我的主要功能:
编辑:
const arrayImage = [];
const selectImage = () => {
const options = {
maxWidth: 2000,
maxHeight: 2000,
storageOptions: {
skipBackup: true,
path: 'images'
}
};
launchImageLibrary(options, response => {
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.error) {
console.log('ImagePicker Error: ', response.error);
} else if (response.customButton) {
console.log('User tapped custom button: ', response.customButton);
} else {
async(response);
}
})
function async(param) {
setTimeout(function() {
const source = { uri: param.assets[0].uri }
array ?
setImage(source)
: arrayImage.push(source)
console.log(arrayImage);
}, 2000);
}
console.log(arrayImage)
};
我尝试使用 promises,使用 SetTimeOut 在异步中更改我的函数,但我想问题不在于异步。
有人求助吗?非常感谢。
即使您离开屏幕,数组也可以使用 useState 来保持状态:
import { useState } from "react";
const yourComponent = () => {
const [array, setArray] = useState([]);
}
并且在你的函数中而不是 array.push(source) 你这样使用它:
const newArray = [...array, source];
setArray(newArray);
这应该会保留您的结果,因为我认为问题出在数组而不是异步函数。
我在整整两天没有成功后来到这里。 我想用用户选择的图片增加我的数组,因为 return 到我的数据库 uri 列表。但是当用户选择第一张图片并重新打开 android 导航器拍摄新照片时,我看到数组没有增加。 它采用第一个值,当我离开 selectImage() 方法时它又变回空。
这是我的主要功能:
编辑:
const arrayImage = [];
const selectImage = () => {
const options = {
maxWidth: 2000,
maxHeight: 2000,
storageOptions: {
skipBackup: true,
path: 'images'
}
};
launchImageLibrary(options, response => {
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.error) {
console.log('ImagePicker Error: ', response.error);
} else if (response.customButton) {
console.log('User tapped custom button: ', response.customButton);
} else {
async(response);
}
})
function async(param) {
setTimeout(function() {
const source = { uri: param.assets[0].uri }
array ?
setImage(source)
: arrayImage.push(source)
console.log(arrayImage);
}, 2000);
}
console.log(arrayImage)
};
我尝试使用 promises,使用 SetTimeOut 在异步中更改我的函数,但我想问题不在于异步。 有人求助吗?非常感谢。
即使您离开屏幕,数组也可以使用 useState 来保持状态:
import { useState } from "react";
const yourComponent = () => {
const [array, setArray] = useState([]);
}
并且在你的函数中而不是 array.push(source) 你这样使用它:
const newArray = [...array, source];
setArray(newArray);
这应该会保留您的结果,因为我认为问题出在数组而不是异步函数。