Как передать параметры для дополнительного экрана с помощью react native?

#javascript #reactjs #react-native

#javascript #reactjs #react-native

Вопрос:

У меня есть вкладка экрана, содержащая 2 компонента

Я хочу передать свой идентификатор параметра

     this.props.navigation.navigate("TabsScreen2", {id: idFilm})
 

TabsScreen2 — это нижняя вкладка моего экрана

Моя нижняя вкладка

 const MainStack = createStackNavigator();
const MainStackScreen = () => (
  <MainStack.Navigator>
    <MainStack.Screen
      name="TabsScreen2"
      component={TabsScreenFilmDetail}
      options={{ title: "FilmDetail Screen title" }}>
        
    </MainStack.Screen>
  </MainStack.Navigator>
);

        const TabsFilmDetail = createBottomTabNavigator();
    const TabsScreenFilmDetail = (e) =>  {
      console.log('e ', e.route.params )
      return (
        <TabsFilmDetail.Navigator>
          <TabsFilmDetail.Screen name="FilmDetail" params={e} component={FilmDetailStackScreenNav} />
          <TabsFilmDetail.Screen name="FavoriteList" component={FavoriteListStackScreenNav} />
        </TabsFilmDetail.Navigator>
      );
    }
 

в моем журнале у меня есть мой идентификатор
, но как передать мой параметр моему <TabsFilmDetail.Screen name=»FilmDetail»>
Я пробую параметр params или другое свойство, и это не сработало.
Существует ли решение для передачи простого параметра?
спасибо за помощь

Комментарии:

1. Вы можете использовать передачу параметров в качестве initialParams

Ответ №1:

Я думаю, что правильное ключевое слово, которое вы ищете, — initialParams

Как это в одном из моих кодов

введите описание изображения здесь

Поэтому я думаю, что в случае вашего кода вам нужно изменить это

 <TabsFilmDetail.Screen name="FilmDetail" params={e} component={FilmDetailStackScreenNav} />
 

для этого

 <TabsFilmDetail.Screen name="FilmDetail" initialParams={e} component={FilmDetailStackScreenNav} />
 

Ответ №2:

попробуйте это:

             <TabsFilmDetail.Screen name="FilmDetail">
                {(props) => <FilmDetailStackScreenNav {...props} e={e.route.params} />}
            </Tab.Screen>
 

Комментарии:

1. Если я выполню ваше решение, у меня появится ошибка Uncaught Error: есть как ‘component’, так и ‘children’ реквизит для экрана ‘FilmDetail’. Вы должны передать только один из них. Решение с помощью <FilmDetailStackScreen . Имя экрана =»FilmDetail» initialParams={e.route.params} компонент ={FilmDetail} /> (initialParams) работает очень хорошо. Спасибо за вашу помощь