Передача объектов между экранами навигатора - PullRequest
0 голосов
/ 04 декабря 2018

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

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 на MenuScreen'sобъект menuItem.

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

И успешно отрисовать его в модале, который относится к экрану меню, но я хочу отрисовать его и на экране корзины.

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

1 Ответ

0 голосов
/ 05 декабря 2018

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

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

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

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

Подробнее вы можете узнать здесь .

...