У меня проблемы с react-native
приложением. Я не могу понять, как передавать данные между экранами.
Я понимаю, что есть и другие подобные вопросы, на которые даны ответы на SO, однако решения для меня не сработали.
Я использую StackNavigator
. Вот мои настройки в моем App.js
файле.
export default SimpleApp = StackNavigator({
Home: { screen: HomeScreen },
Categories: { screen: CategoriesScreen }, // send from here
Category: { screen: CategoryScreen } // to here
});
У меня есть TouchableHighlight
компонент, у которого есть onPress
событие, которое переместит на нужный экран. Это на моем Categories.js
файле / экране.
<TouchableHighlight onPress={(id) => {
const { navigate } = this.props.navigation;
navigate('Category', { category: id });
}}>
<Text>{name}</Text>
</TouchableHighlight>
Когда я щелкаю элемент, экран действительно переключается на category
, однако данные props
не отправляются.
Поэтому, когда я проверяю данные на моем Category
экране, он возвращает значение undefined. Я пробовал следующие методы:
this.props.category
this.props.navigation.state.category;
this.props.navigation.state.params.category
Как именно я могу получить доступ к данным, которые я передал в методе navigate
?
navigate('Category', { category: id });
Изменить: вот моя фактическая структура кода:
data
происходит от API
.
for (var i = 0; i < data.length; i++) {
var name = data[i].name;
var id = data[i].id;
categoryComponents.push(
<Card key={id}>
<CardItem>
<Body>
<TouchableHighlight onPress={(id) => {
const { navigate } = this.props.navigation;
navigate('Category', { params: { category: id } });
}}>
<Text>{name + " " + id}</Text>
</TouchableHighlight>
</Body>
</CardItem>
</Card>
);
}