您好,我想知道如何将道具传递给导航员,或者是否有更好的方法来设计我的结构。
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的道具传递到标题吗?我正在尝试,但是空手而归。谢谢!
答案 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传递新信息。我将仔细研究标题,并尝试类似的方法。