通过BottomTabNavigator从根组件传递道具

问题描述 投票:1回答:1

我的app root组件如下所示:

export default class App extends React.Component {
  render() {
    <RootTabs doThings={this.doThings} />
  }
}

RootTabs组件由createBottomTabNavigator从react-navigation创建:

const RootTabs = createBottomTabNavigator({
  Movies: {
    screen: Movies
  },
  Actors: ... // etc
})

我的问题是,我想从根组件(App)向Movies组件传输数据(如果可能的话,作为道具),但是Movies没有收到doThings道具。

如何通过q​​azxswpoi向儿童传递道具?

如果那是不可能的,那么当一个子组件被一个BottomTabNavigator分隔时,子组件在根组件上调用方法的最简单方法是什么?

react-native react-navigation
1个回答
2
投票

尝试使用screenProps

screenProps记录在这个BottomTabNavigator

答案来自page

最小的例子是

here

HomeScreen和ProfileScreen是定义为AppNavigator屏幕的组件。在上面的示例中,我将用户数据从顶级根组件MyApp传递到HomeScreen和ProfileScreen。

由于MyApp和屏幕组件之间有一个AppNavigator,我们需要将用户传递给AppNavigator的screenProps prop,以便AppNavigator将其传递给屏幕。除screenProps之外的任何其他道具都不会传递下去。

MyApp < - 这里的用户数据。

  • AppNavigator < - StackNavigator,中间人。必须使用screenProps来传递用户数据。 HomeScreen < - 将从this.props.screenProps.user而不是this.props.user接收用户数据。 ProfileScreen < - 与HomeScreen相同
© www.soinside.com 2019 - 2024. All rights reserved.