Ваш пример немного расплывчатый, поэтому я пытаюсь объяснить как можно больше.
Существует 2 различных способа передачи свойств на экраны (кроме реализации с избыточностью) .
Вы можете передавать параметры на экран навигации с передачей аргумента params
на экран.
navigation.navigate ({routeName, params, action, key}) ИЛИ navigation.navigate (routeName, params, action)
routeName - Имя маршрута назначения, которое было зарегистрировано где-то в приложенииrouter
params - параметры для слияния с целевым маршрутом
action - (расширенный уровень) Поддействие для запуска в дочернем маршрутизаторе,если на экране есть навигатор.Полный список поддерживаемых действий см. В документе «Действия».
ключ - Необязательный идентификатор маршрута, по которому следует перейти.Вернитесь к этому маршруту, если он уже существует
Образец
this.props.navigate('Profile', { name: 'Brent' })
Вы можете передать глобальный параметр навигации, который может быть доступен на каждом экране для этой навигации.
screenProps - передать дополнительные параметры дочерним экранам
Образец
const SomeStack = createStackNavigator({
// config
});
<SomeStack
screenProps={/* this prop will get passed to the screen components as this.props.screenProps */}
/>
Я создал небольшое приложение-образец, которое, я полагаю, вы пытаетесь достичь.
const Tab = ({name, searchValue}) => (
<View style={styles.tabContainer}>
<Text>{name}</Text>
<Text>{`Searching: ${searchValue || '...'}`}</Text>
</View>
);
const Wines = (props) => (<Tab name="Wines Page" searchValue={props.screenProps.searchValue} />);
const Stores = (props) => (<Tab name="Stores Page" searchValue={props.screenProps.searchValue} />);
const Vineyards = (props) => (<Tab name="Vineyards Page" searchValue={props.screenProps.searchValue} />);
const Restaurants = (props) => (<Tab name="Restaurants Page" searchValue={props.screenProps.searchValue} />);
const Navigator = createMaterialTopTabNavigator({
Wines,
Stores,
Vineyards,
Restaurants
});
export default class App extends Component {
state = {
text: ''
}
changeText = (text) => {
this.setState({text})
}
clearText = () => {
this.setState({text: ''})
}
render() {
return (
<View style={styles.container}>
<SearchBar
lightTheme
value={this.state.text}
onChangeText={this.changeText}
onClearText={this.clearText}
placeholder='Type Here...' />
<Navigator screenProps={{searchValue: this.state.text}} />
</View>
);
}
}