Это просто, как вы сказали: отправьте некоторые данные navigation.navigate('screenB', { data })
и получите их на экране B как navigation.state.params.data
.
Я согласен с @FurkanO. Вы, вероятно, показываете, что используете Redux вместо этого, чтобы контролировать все состояние вашего приложения, но для простых вещей, я думаю, нет необходимости!
Я сделал простую демонстрацию закусок, чтобы показать вам: snack.expo.io/@abranhe/stackoverflow-56671202
![image](https://i.stack.imgur.com/nSSyo.gif)
Вот код для продолжения:
Главный экран
class HomeScreen extends Component {
state = {
colors: ['red', 'blue', 'green'],
};
render() {
return (
<View>
{this.state.colors.map(color => {
return <Text>{color}</Text>;
})}
<View>
<Text>Details Screen</Text>
<Button
title="Go to Details"
onPress={() => this.props.navigation.navigate('Details', { colors: this.state.colors })}
/>
</View>
</View>
);
}
}
Экран сведений
class DetailsScreen extends Component {
state = {
colors: [],
};
componentWillMount() {
this.setState({ colors: this.props.navigation.state.params.colors });
}
render() {
return (
<View>
{this.state.colors.map(color => {
return <Text>{color}</Text>;
})}
<Text>Details Screen</Text>
</View>
);
}
}
Обновление
Автор вопроса запросил обновление, чтобы добавить setTimeout()
, чтобы увидеть точный момент, когда данные находятся на другом экране, поэтому оно будет выглядеть так:
componentWillMount() {
setTimeout(() => {
this.setState({ colors: this.props.navigation.state.params.colors });
}, 3000);
}
![image](https://i.stack.imgur.com/ZGQ0E.gif)