Передача объектов между экранами навигатора

У меня есть нижняя панель навигации навигатора и имеет 3 экрана. На экране меню я пытаюсь выбрать пункт меню, а на экране корзины, который является вторым маршрутом навигатора вкладок, показать выбранный пункт меню. Вот моя вкладка-навигатор

const MenuNavigator = createBottomTabNavigator(
  {
    Menu:MenuScreen,
    Cart:CartScreen,
    Options:OptionScreen
  },
  {
    defaultNavigationOptions: ({ navigation }) => ({
      tabBarIcon: ({ focused, horizontal, tintColor }) => {
        const { routeName } = navigation.state;
        let iconName;
        if (routeName === 'Menu') {
          iconName = `ios-md-book${focused ? '' : '-outline'}`;
        } else if (routeName === 'Cart') {
          iconName = `ios-options${focused ? '' : '-outline'}`;
        }else if(routeName ==='Options'){
          iconName=`ios-options${focused? '' : '-outline'}`;
        }

        // You can return any component that you like here! We usually use an
        // icon component from react-native-vector-icons
        return <Ionicons name={iconName} size={horizontal ? 20 : 25} color={tintColor} />;
    },
    }),tabBarOptions: {
      activeTintColor: 'tomato',
      inactiveTintColor: 'gray',
    },
  }

  );

У меня есть объект пункт меню в функции кнопки onPress, как это:

var menuitem={itemId:item.itemId,
                    name:item.name,
                    ingredients:item.ingredients,
                    price:item.price,
                    type:item.type};

и назначая его в том же режиме onPress объекту menuItem на MenuScreen.

this.setState({menuItem:Object.assign({},menuitem)});

И успешно рендеринг в модале, который принадлежит Menu-screen, но я хочу рендерить и в Cart-screen.

Но тогда как я доберусь до этого объекта с экрана корзины? В проекте так много кодов и экранов, что я скопировал только связанные части.

1 ответ

Вы можете использовать Redux для обеспечения общего хранилища на всех экранах, которые вы используете для обмена данными. Если вы перемещаетесь по экранам, вы также можете передавать данные с помощью

this.props.navigation.navigate("NewScreen", {data: dataToBePassed})

Затем вы можете получить данные с помощью

this.props.navigation.getParam("data", defaultValue)

Вы можете узнать больше здесь.