Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript react native:如何将状态传递到嵌套的stackNavigator到tabNavigator_Javascript_React Native - Fatal编程技术网

Javascript react native:如何将状态传递到嵌套的stackNavigator到tabNavigator

Javascript react native:如何将状态传递到嵌套的stackNavigator到tabNavigator,javascript,react-native,Javascript,React Native,我正在尝试使用传递状态从嵌套的堆栈导航器到选项卡导航器 首先,我的App.js导航结构如下所示 App.js //tabNavigator. This is where I want to pass my state. const tabNavigator = createMaterialTopTabNavigator({ tabOne:tabOne, tabTwo: tabTwo, tabThree:tabThree }) //I nested tabNavig

我正在尝试使用
传递状态
从嵌套的
堆栈导航器
选项卡导航器

首先,我的
App.js导航结构
如下所示

App.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/>;
  }
}
我的问题


如何访问
tabNavigator
中的传递状态
newState
(我从
initialScreen
传递的状态),其中
tabOne
tabTwo
tabThree
是嵌套的。

我看到了您的问题,感觉您的代码有点混乱。您可以使用此行获取要传递给StackNavigator的参数。 在选项卡屏幕中尝试此代码
this.props.navigation.dangerlyGetParent().getParam('state')

请更正您的
onPress
事件
onPress={()=>this.props.navigation.navigate('StackNavigator',{state:this.state.newState})}
我看到了你的问题,我觉得你的代码有点混乱。您可以使用此行获取要传递给StackNavigator的参数。 在选项卡屏幕中尝试此代码
this.props.navigation.dangerlyGetParent().getParam('state')

请更正
onPress
事件
onPress={()=>this.props.navigation.navigate('StackNavigator',{state:this.state.newState})}

您想要不带redux的,对吗?请不要带redux。我不打算使用redux。你想在所有选项卡或任何一个选项卡中使用此状态吗?你想不使用redux,对吗?请不要使用redux。我不打算使用redux。你想在所有选项卡或任何一个选项卡中使用此状态吗?谢谢你的回答,它可以工作。但是为什么你认为我的代码有点混乱?这不是嵌套导航器的正确方法吗?我觉得我不能把它简单化。谢谢你的回答,它很有效。但是为什么你认为我的代码有点混乱?这不是嵌套导航器的正确方法吗?我觉得我再简单不过了。
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>
   );
  }
}