デバイスの向きが変化したときにドロワの幅を動的に変更したい。これは私のコードドロワの幅を動的に設定する関数内のアクセス状態
componentDidMount
と
onLayout
関数が呼び出されたとき、私はupdateWidthを呼び出す
updateWidth = (width) => {
this.setState({drawerWidth: width/2 });
}
です。
drawerNavigator
宣言では、drawerWidth: this.state.drawerWidth
と設定しました。ここで私はdrawerWidth: this.state.drawerWidth
が定義されていないことを私に知らせるエラーを得る。どうすればこの問題を解決できますか?
編集: これはあなたの引き出しのコンポーネントはステートレスなコンポーネントであるコンポーネントのコードの概要
const { width } = Dimensions.get('window');
const AppDrawer = DrawerNavigator(
{
Category: {
path: '/bla',
screen: bla,
},
},
{
drawerWidth: this.state.drawerWidth ,
contentComponent: test,
initialRouteName: 'tets',
contentOptions: {
activeTintColor: '#fd67d3',
},
}
);
const AppNavigator = StackNavigator({
...
})
class RootContainer extends Component {
constructor(props) {
super(props);
this.state = {
drawerWidth: 30
}
}
onLayout(e) {
const {width, height} = Dimensions.get('window')
this.updateWidth(width);
}
updateWidth = (width) => {
this.setState({drawerWidth: width/2 });
}
componentDidMount() {
this.updateWidth(width);
}
ステートレスコンポーネントを使用していますか?そして、あなたはあなたのコンポーネントのより多くのコードを提供することができますか? – TimH
@TimHもっとコードを追加しました – user567