我使用react-native-vision-camera捕捉图片并在<Image>组件中查看它。预期的行为是在捕获新图片后更新图片。因为source组件的<Image>属性指向一个新图片(同名Ok,但仍然是一个新图片)。
但这从来没有发生过。即使当我重新加载应用程序,<Image>仍然显示旧的图片。我得重新命名这张新照片。
我认为这是因为在source保存新图片之前,react-native-vision-camera属性更新的状态是这样的,因此<Image>组件呈现旧图片,但据我所知,我使用的是async-await,这种情况不应该发生。
我为捕获函数编写的代码是
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)
}查看图像的代码
{
photoPath.length > 0 ?
< Image
source={{ uri: photoPath }}
style={[styles.camera, { backgroundColor: 'black' }]}
/>
:
null
}我有一个捕获<Button>,它调用capture()函数来更新应该更新<Image>组件的source的photoPath状态,这个过程应该查看新的图片。但是,即使在重新加载应用程序之后,这种情况也不会发生。我必须为这张新照片挑选一个新的名字才能让它被观看。为什么我会有这种行为而不是我所期待的呢?我的代码或我的理解有什么问题,正确的解决方案是什么?
发布于 2022-05-29 15:18:18
经过一天的搜索和调试,我发现<Image>是出于一个我不知道的原因而呈现出已兑现的图像。而且,由于没有一种简单的方法来删除react中的现金--本地人,这是解决我问题的一种方法。
< Image
source={{ uri: photoPath + "?" + new Date() }}
style={[styles.camera, { backgroundColor: 'black' }]}
/>https://stackoverflow.com/questions/72414950
复制相似问题