【问题标题】:React Native Expo ImagePicker - Getting undefined image.uri the first time but saving ok the second timeReact Native Expo ImagePicker - 第一次获取未定义的 image.uri 但第二次保存正常
【发布时间】:2022-01-23 01:14:22
【问题描述】:

我有一个用 android 和 Expo-Image-Picker 拍照的功能。我将结果保存在本地状态 pickUri 中,然后通过 dispatch 将其发送到 Redux 状态。我第一次将pickUri 设为未定义,但第二次它保存了拍摄的第一张照片。 我认为问题在于异步功能。

const handlerTakeImage = async () => {
    const isCameraOk = await verifyPermissions();
    if (!isCameraOk) return;

    const image = await ImagePicker.launchCameraAsync({
      allowsEditing: true,
      aspect: [16, 9],
      quality: 0.8,
    });

    setPickedUri(image.uri);
    console.log(pickedUri);

    pickedUri && dispatch(saveImage(pickedUri, props.itemId));
  };

【问题讨论】:

    标签: react-native redux react-redux expo react-native-image-picker


    【解决方案1】:

    我通过将 image.uri 数据直接发送给 dispatch 来修复它,而不是将其保存在本地状态。

    const handlerTakeImage = async () => {
        const isCameraOk = await verifyPermissions();
        if (!isCameraOk) return;
    
        const image = await ImagePicker.launchCameraAsync({
          allowsEditing: true,
          aspect: [16, 9],
          quality: 0.8,
        });
        
        dispatch(saveImage(image.uri, props.itemId))
      };
    

    我不知道这是否是一个好的解决方案。我愿意接受其他选择。

    【讨论】:

    • 将任何数据设置为状态是异步任务。 useState 需要时间来存储数据。您将数据存储在 setPickedUri 中,并且在下一行您尝试打印该状态,因此它为空。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    相关资源
    最近更新 更多