den*_*emm 6 javascript reactjs react-native react-navigation
我的应用程序使用 react-navigation 库进行路由,但现在我有一个要求,我只想在属于 TabNavigator 的路由上显示模式窗口。我认为如果我创建了一个高阶组件并使用它来包装 TabNavigator,这会起作用,但这似乎不起作用。
那么将功能添加到 react-navigation Navigator 的正确方法是什么?
TabRoutes.js
这在没有提供程序的情况下工作正常,但是一旦我将提供程序添加到 TabNavigator,路由就无法访问。
import myProvider from './providers/myProvider';
const TabRoutes = createBottomTabNavigator({
Main: {screen: HomeStack},
Moments: {screen: MomentStack},
Settings: {screen: SettingsRoutes}
},{
initialRouteName: 'Main'
});
export default myProvider(TabRoutes);
Run Code Online (Sandbox Code Playgroud)
路由.js
TabNavigator 是 SwitchNavigator 的一部分,但只有选项卡的路由才能显示模态。
import TabRoutes from './routes/TabRoutes';
const AppRoutes = createSwitchNavigator({
Loading: LoadingScreen,
Auth: AuthStack,
App: TabRoutes,
}, {
initialRouteName: 'Loading'
});
Run Code Online (Sandbox Code Playgroud)
myProvider.js
const myProvider = (wrappedComponent) => {
class extends React.Component {
render (
<View>
<WrappedComponent {...this.props}>
<MyModal visible={...}>
... // rest of modal
</MyModal>
</View>
);
}
}
export default myProvider;
Run Code Online (Sandbox Code Playgroud)
未经测试,但我接下来会尝试这个:
TabRoutes.js
import myProvider from './providers/myProvider';
const TabRoutes = createBottomTabNavigator({
Main: {screen: myProvider(HomeStack)},
Moments: {screen: myProvider(MomentStack)},
Settings: {screen: myProvider(SettingsRoutes)}
},{
initialRouteName: 'Main'
});
export default TabRoutes;
Run Code Online (Sandbox Code Playgroud)
...肯定是您想要包装的屏幕组件,而不是整个TabRoutes?
| 归档时间: |
|
| 查看次数: |
1789 次 |
| 最近记录: |