我开发了一个运行良好的应用程序,直到我在Expo上重新加载一次应用程序。我不明白为什么没有执行takePicture函数: 在控制台中,我可以看到STEP 0,STEP 1,但不是STEP 2 ...
<TouchableOpacity
style={{
alignSelf: 'center',
height: 70,
width: 70,
borderRadius: 35,
backgroundColor: colour.primary,
borderColor: '#fff',
borderWidth: 3
}}
onPress={() => {
console.log('STEP 0');
this.takePicture.bind(this);
console.log('STEP 1');
this.setState({pictureTook: true});
}}
>
<Text style={sty.flipText}></Text>
</TouchableOpacity>
takePicture = async function() {
console.log('STEP 2');
if (this.camera) {
console.log('STEP 3');
this.camera.takePictureAsync({base64: true}).then(data => {
FileSystem.moveAsync({
from: data.uri,
to: `${FileSystem.documentDirectory}photos/IdCard.jpg`,
}).then(() => {
Vibration.vibrate();
});
});
}
};
我注意到我使用异步功能和AsyncStorage模块重新加载了很多时间。这可能是问题吗?
答案 0 :(得分:0)
您正在为onPress
的{{1}}方法声明匿名函数,
TouchableOpacity
在其中,您绑定了() => {
console.log('STEP 0');
this.takePicture.bind(this);
console.log('STEP 1');
this.setState({pictureTook: true});
}
的{{1}}上下文,如下所示:this
。你永远不会调用this.takePicture
。