これが私のcomponentDidMount()
方法です:
componentDidMount() {
const subscription = accelerometer.subscribe(({ x, y, z, timestamp }) => {
x = Math.trunc(x*100);
this.setState({x})
});
}
上記の方法では、100ミリ秒ごとに状態が変化しています。render()
以下のように、メソッドでその状態を使用しました。
render() {
const animatedImageStyle = StyleSheet.flatten([
styles.captureButton,
{
transform: [{rotateZ:this.state.x + 'deg'}]
}
])
return (
<SideMenu
menu={leftMenu}
isOpen={this.state.isOpenLeftMenu}
menuPosition={'left'}
bounceBackOnOverdraw={false}
onChange={(isOpenLeftMenu) => this.updateLeftMenuState(isOpenLeftMenu)}
>
<View>
<TouchableOpacity
activeOpacity={0.5}
onPress={(this.state.recordingMode == 'camera')?() => this.takePicture():() => this.toggleRecording()}
>
<Image
source={require('../assets/imgs/forRotate.png')}
style={animatedImageStyle}
/>
</TouchableOpacity>
</View>
</SideMenu>
)
}
さて、問題は、サイドメニューを開こうとすると、開かないということです。つまり、開いてもハングしすぎます。アプリ全体がハングしすぎています。
それは以下の方法によるものだと思います:
updateLeftMenuState(isMenuOpen) {
this.setState({
isOpenLeftMenu:isMenuOpen
})
}
と呼ばれる別の状態を更新していることに注意してください。isOpenLeftMenu
これは、状態の更新中にブロックされる可能性がありx
ます。
ここで何がうまくいかないのか誰か教えてもらえますか?