Ich versuche, eine App zu machen, wo, wenn eine Taste gedrückt wird, lädt es einen zufälligen Bildschirm.Handling Variablen in reagieren nativen
const Slides = [Slide0, Slide1, Slide2, Slide3, Slide4, Slide5];
randomNumber = Math.floor(Math.random() * 6);
class HomeScreen extends React.Component {
constructor(props) {
super(props);
this.state = {
randomNumber: 1,
};
}
_onPressButton =() => {
randomNumber = Math.floor(Math.random() * 6);
this.setState({randomNumber: randomNumber});
this.props.navigation.navigate('NextScreen');
}
static navigationOptions = {
header: null,
}
render() {
const { navigate } = this.props.navigation;
return (
<View style={styles.container}>
<Image
source={require('./assets/icons/app-icon.png')}
style={{width: 50, height: 50}}
/>
<Text style={{ marginTop: 100 }}>Welcome to Dementia Care Activities.</Text>
<Text>Next slide should be: {this.state.randomNumber}</Text>
<Text>{randomNumber}</Text>
<Button
onPress={this._onPressButton}
title="Get New Activity"
/>
</View>
);
}
}
const SimpleAppNavigator = StackNavigator({
Home: { screen: HomeScreen },
NextScreen: { screen: Slides[randomNumber] }
});
const AppNavigation =() => (
<SimpleAppNavigator />
);
export default class App extends React.Component {
render() {
return (
<AppNavigation/>
);
}
}
Das Problem hierbei ist, dass der Wert für randomNumber
nie wieder aktualisiert wird, wenn die Schaltfläche geklickt wird, aber der Rest des Codes in _onPressButton
läuft wie erwartet.
Wenn ich die App neu lade, erhalte ich einen anderen zufällig zugewiesenen Wert für randomNumber
, aber dann kann dieser Wert nicht überschrieben werden.
Wie mache ich es so, dass der Wert aktualisiert wird?
Das ist nicht ganz das, was ich suche. Das Problem ist, dass wenn der Button gedrückt wird und die Funktion '_onPressButton' ausgeführt wird, der neue Wert nicht an 'randomNumber' übergeben wird in const SimpleAppNavigator = StackNavigator ({ Home: {Bildschirm: HomeScreen}, NextScreen: { Bildschirm: Folien [randomNumber]} }); –