![](/img/trans.png)
[英]How can I pass props into stackNavigator in React-Native?
[英]react-native : How to pass state to nested stackNavigator to tabNavigator
我正在嘗試使用從嵌套stackNavigator
到tabNavigator
pass state
。
首先我的App.js navigation structure
看起來像這樣
應用程序.js
//tabNavigator. This is where I want to pass my state.
const tabNavigator = createMaterialTopTabNavigator({
tabOne:tabOne,
tabTwo: tabTwo,
tabThree:tabThree
})
//I nested tabNavigator to this StackNavigator
const StackNavigator = createStackNavigator({
stackAndTab: {
screen: tabNavigator,
navigationOptions: ({ navigation }) => ({
header:
<CustomHeader
navigation={navigation}
/>
,
})
},
}, {
defaultNavigationOptions: {
header: null
}
})
//I have another stackNavigator where I put all my stackNavigators.
const AllStackNavigator = createStackNavigator(
{
InitialScreen:InitialScreen,
StackNavigator:StackNavigator,
},
{
defaultNavigationOptions: {
header: null,
},
},
);
//Finally I nest my StackNavigator to SwitchNavigator
const SwitchNavigator = createSwitchNavigator(
{
AllStackNavigator:AllStackNavigator
},
{
defaultNavigationOptions: {
header: null,
},
},
);
const CombinedNavigator = createAppContainer(StartSwitchNavigator);
export default class App extends React.Component {
render() {
return <CombinedNavigator/>;
}
}
我試圖pass state
到StackNavigator
從InitialScreen
是這樣的:
export default class InitialScreen extends React.Component {
constructor(props) {
super(props)
this.state = {
newState:'this is new State'
}
}
render() {
return (
<View style={styles.container}>
<TouchableOpacity
onPress={()=> this.props.navigation.navigate('StackNavigator', {state:'this.state.newState})}
style={{width:'100%', height:110}}>
<Text>pass state</Text>
</TouchableOpacity>
</View>
);
}
}
我的問題
如何在tabOne
、 tabTwo
、 tabThree
嵌套的tabNavigator
中訪問傳遞的狀態newState
(我從initialScreen
傳遞的狀態)。
我看到了你的問題,我覺得你的代碼有點混亂。 您可以使用此行獲取傳遞給StackNavigator 的參數。 在您的選項卡屏幕中嘗試此代碼this.props.navigation.dangerouslyGetParent().getParam('state')
並請更正您的onPress
事件onPress={()=> this.props.navigation.navigate('StackNavigator', {state:this.state.newState})}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.