У меня возникли проблемы с передачей параметров с экрана в switchNavigator на другой в TabNavigator.
setvalue(response){
this.setState({profile :response})
console.warn(this.state.profile);
this.state.navigate('Navigators',{profile: profile})
}Профиль содержит объект JSON сведений о профиле. Навигация отправляет дату на экран «Навигаторы», который является просто TabNavigator.
const Navigators = createAppContainer(Userstack);
export default RootStack = createSwitchNavigator(
{
Home: {
screen: Login
},
Register: {
screen: Registration
},
Navigators: {
screen: Navigators
},
},
{
initialRouteName: 'Home'
}
);Как создается TabNavigator.
export default Userstack = createBottomTabNavigator(
{
User: {
screen: Profile
},
Discovery: {
screen: DiscoveryNavigator
},
},
{
defaultNavigationOptions: ({ navigation }) => ({
tabBarIcon: ({ tintColor }) => {
const { routeName } = navigation.state;
let IconComponent = Ionicons;
let iconName;
if (routeName === 'User') {
iconName = `md-contact`;
IconComponent = HomeIconWithBadge;
} else if (routeName === 'Discovery') {
iconName = `md-search`;
}
return <IconComponent name = {iconName} size = {27} color = {tintColor} />;
},
}),
tabBarOptions: {
activeTintColor: '#00FA9A',
inactiveTintColor: 'black',
},
}
);Экран, на котором я хочу получить доступ к информации профиля,
export default class Profile extends Component {
constructor(props){
super(props);
console.warn(props)
this.State = {
profile: this.props.navigation.params.profile
}
}




Вы пробовали this.props.navigation.state.params?
По ссылке: https://reactnavigation.org/docs/params.html,
Вы также можете напрямую получить доступ к объекту params с помощью this.props.navigation.state.params. Это может быть null, если параметры не были предоставлены, и поэтому обычно проще просто использовать getParam, чтобы вам не приходилось иметь дело с этим случаем.
Да, профиль this.state.navigate('Navigators',{profile: profile}) не определен. Можете ли вы добавить this.state.navigate('Navigators',{profile: 'profile'}); Just to see if you are getting param` в виде строки или нет. Если это работает, замените это на console.info(response); //check in you getting the response this.state.navigate('Navigators',{profile: response}); Это должно решить проблему.
Я пробовал это раньше, и проблема даже в попытке передать строку, которая появляется как неопределенная в моем 3-м блоке кода, куда ведет «Навигатор», и мне интересно, передается ли туда параметр. Поскольку он решает перейти к профилю, я не думаю, что параметр передается, следовательно, он не определен. Я просто не знаю, как взять параметр, который я получаю в «Навигаторе», и отправить его на экран профиля.
Спасибо за ответ, Да, я пробовал примеры из ссылки. Я думаю, что проблема может заключаться в том, что данные передаются в «Навигатор» вместо экрана «профиль», и это вызывает «нулевой»/неопределенный.