Передача объектов между экранами навигатора
У меня есть нижняя панель навигации навигатора и имеет 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)
Вы можете узнать больше здесь.