В соответствии с документами: параметры реагирования-навигации , я бы сделал что-то вроде этого (родительский):
this.props.navigation.navigate('Details', {
itemId: 86,
otherParam: 'anything you want here',
});
А потом переходя к ребенку
class DetailsScreen extends React.Component {
render() {
const { navigation } = this.props;
const itemId = navigation.getParam('itemId', 'NO-ID');
const otherParam = navigation.getParam('otherParam', 'some default value');
return ( (..omited for brevity)
EDIT:
Моя ситуация такова, что в одном экране / контейнере мы запускаем мутацию graphql, которая берет phoneNumber и получает код для пользователя.
На следующем экране мне нужно взять этот phoneNumber, который пользователь только что вставил, чтобы запустить другую мутацию, которая принимает phoneNumber и код для аутентификации. Я не хочу использовать состояния, чтобы сделать это, так как на реагирующей навигации есть API.
Родитель:
signInUser(phoneNumber: string) {
const { navigation, sendCode } = this.props
sendCode({ variables: { phoneNumber } }) // graphql mutation
navigation.navigate('Authenticate', { phoneNumber }) // passing
// phoneNumber as param
}
Ребенок:
export const AuthenticationCodeModal = (props: NavigationScreenProps) => {
const {navigation} = props
const phoneNumber = navigation.getParam(phoneNumber)
// console.log(phoneNumber)
// I need to get phoneNumber here and pass it as props to
// <AuthenticationFormContainer> which will fire up auth mutation
return(
<View style={styles.container} >
<AuthenticationFormContainer/>
</View>
)
}