通过嵌套导航器反应本地传递道具

时间:2019-02-14 23:38:50

标签: javascript reactjs react-native react-navigation

您好,我想知道如何将道具传递给导航员,或者是否有更好的方法来设计我的结构。

const MangaTabRouter = createMaterialTopTabNavigator(
{
    Info: { screen: Manga },
    Chapter: { screen: Chapter }
  }
);

const Stack = createStackNavigator(
  {
    Main: { 
      screen: MangaTabRouter,
      navigationOptions: {
        header: props => <CustomHeader {...props} />
      }
    }
  }
);

const HomeScreenRouter = createDrawerNavigator(
  {
    MyLibrary: { screen: HomeScreen },
    Sources: { screen: Sources },
    Manga: { screen: Stack }
  },
  {
    contentComponent: props => <SideBar {...props} />,
    initialRouteName: "MyLibrary"
  }
);

const AppContainer = createAppContainer(HomeScreenRouter);

然后我有一个按钮,该按钮调用主URI,并在那里传递一些道具。

this.props.navigation.navigate('Main', {data});

当前,我使用dragonallyGetParent()访问道具,但是我发现它不适用于我的设计,并且它不适用于多个漫画条目(即道具不变)。理想情况下,我希望将标签(数据对象)传递到选项卡导航器下的Info和Chapter URI。我认为这与将道具传递到路由器本身有关吗?所以我的问题是:是否也可以将道具发送给子孩子,还是我必须以某种方式重新设计路由器以将组件传递给Main,然后将MangaTabRouter作为其中的子组件?另外,还有一种方法可以将我发送给Info的道具传递到标题吗?我正在尝试,但是空手而归。谢谢!

2 个答案:

答案 0 :(得分:0)

您需要将数据作为this.props.navigation.navigate('Main', {data : item})

项传递

并在您的子组件中调用this.props.navigation.state.params.dat a

答案 1 :(得分:0)

 AsyncDbCall.ExecuteCallback<Device, Device> updateDeviceCallback = new 
 AsyncDbCall.ExecuteCallback<Device, Device>()
    {
        @Override
        public Device execute(Device device)
        {
            deviceDao.updateDevice(device);
            return device;
        }
    };

我必须使用screenProps传递新信息。我将仔细研究标题,并尝试类似的方法。