首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使在使用react本机摄像机捕捉到新图片之后,<Image>仍会查看旧图片。

即使在使用react本机摄像机捕捉到新图片之后,<Image>仍会查看旧图片。
EN

Stack Overflow用户
提问于 2022-05-28 10:39:32
回答 1查看 756关注 0票数 1

我使用react-native-vision-camera捕捉图片并在<Image>组件中查看它。预期的行为是在捕获新图片后更新图片。因为source组件的<Image>属性指向一个新图片(同名Ok,但仍然是一个新图片)。

但这从来没有发生过。即使当我重新加载应用程序,<Image>仍然显示旧的图片。我得重新命名这张新照片。

我认为这是因为在source保存新图片之前,react-native-vision-camera属性更新的状态是这样的,因此<Image>组件呈现旧图片,但据我所知,我使用的是async-await,这种情况不应该发生。

我为捕获函数编写的代码是

代码语言:javascript
复制
const [photoPath, setPhotoPath] = useState("");

const capture = async () => {
        const photo = await camera.current.takePhoto();
        const path = RNFS.ExternalDirectoryPath + '/photo-X.jpg';
        //when i update X (in the saved image name) with a new number,
        //<Image> views the correct image.

        await RNFS.moveFile(photo.path, path)
        setPhotoPath("file://" + path)
    }

查看图像的代码

代码语言:javascript
复制
{
    photoPath.length > 0 ?
        < Image
          source={{ uri: photoPath }}
          style={[styles.camera, { backgroundColor: 'black' }]}
        />
    :
        null
}

我有一个捕获<Button>,它调用capture()函数来更新应该更新<Image>组件的sourcephotoPath状态,这个过程应该查看新的图片。但是,即使在重新加载应用程序之后,这种情况也不会发生。我必须为这张新照片挑选一个新的名字才能让它被观看。为什么我会有这种行为而不是我所期待的呢?我的代码或我的理解有什么问题,正确的解决方案是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-05-29 15:18:18

经过一天的搜索和调试,我发现<Image>是出于一个我不知道的原因而呈现出已兑现的图像。而且,由于没有一种简单的方法来删除react中的现金--本地人,这是解决我问题的一种方法。

代码语言:javascript
复制
< Image
    source={{ uri: photoPath + "?" + new Date() }}
    style={[styles.camera, { backgroundColor: 'black' }]}
/>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72414950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档