Ich möchte die Schubladenbreite dynamisch ändern, wenn sich die Ausrichtung des Geräts ändert. Dies ist mein CodeZugriffsstatus innerhalb einer Funktion zum dynamischen Einstellen der Schubladenbreite
updateWidth = (width) => {
this.setState({drawerWidth: width/2 });
}
ich updateWidth rufen, wenn componentDidMount
und onLayout
Funktionen aufgerufen werden.
In der drawerNavigator
Erklärung, ich setze . Hier bekomme ich eine Fehlermeldung, dass drawerWidth: this.state.drawerWidth
nicht definiert ist. Wie kann ich dieses Problem lösen?
Edit: Dies ist der Komponentencode Überblick
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);
}
Verwenden Sie eine zustandslose Komponente? Und könnten Sie mehr Code für Ihre Komponente bereitstellen? – TimH
@TimH Ich habe mehr Code hinzugefügt – user567