问题描述
我正在开发React Native应用,我想在Expo Camera处理图像时显示一个ActivityIndicator组件。
git clone
因此,功能 takePicture 可以执行以下操作:
<TouchableOpacity style={{alignSelf: 'center'}} onPress={takePicture}>
<FontAwesome name="camera" style={{ color: "#FEA428",fontSize: 50,marginBottom: 20}}/>
</TouchableOpacity>
setLoading更改“ isLoading”道具,该道具表示ActivityIndicator是否可见。但是,在第一个const takePicture = async () => {
setLoading(prevstate => !prevstate)
if(cameraRef){
let photo = await cameraRef.takePictureAsync({quality: 0.5,skipProcessing: true,fixOrientation: false});
setLoading(prevstate => !prevstate)
setPhotoAbove(photo)
}
}
之后,将不再执行以下代码。我在这里想念东西吗?
编辑:我正在发布带有代码的Expo Snack,以进行测试。在Web中,该问题不明显,但是例如,如果您在Android上运行它,它将显示出来。
https://snack.expo.io/@avradev/0a8a01
Tks。
解决方法
您应该在这样的await方法调用之后移动第二个setLoading:
const takePicture = async () => {
setLoading(prevState => !prevState)
if(cameraRef){
let photo = await cameraRef.takePictureAsync({quality: 0.5,skipProcessing: true,fixOrientation: false});
setLoading(prevState => !prevState);
setPhotoAbove(photo);
}
}