为什么我的数组会在我离开函数时自行重置?

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);

这应该会保留您的结果,因为我认为问题出在数组而不是异步函数。