react-native - 使用 react-navigation 3.* 如何从屏幕导航到同一级别的 BottomTabNavigator?
问题描述
我得到了具有这种结构的本机应用程序:
- ./App.js
- ./screens/AppNavigator.js
- ./screens/SignInScreen.js
- ./screens/HomeScreen.js
- ./screens/FavoritesScreen.js
应用程序.js:
import { createAppContainer } from "react-navigation";
import AppNavigator from './screens/AppNavigator';
const AppContainer = createAppContainer(AppNavigator);
export default class App extends React.Component {
render() {
return (
<View>
<AppContainer/>
</View>
);
}
}
屏幕/AppNavigator.js:
import { createSwitchNavigator, createBottomTabNavigator } from 'react-navigation';
import SignInScreen from './SignInScreen';
import HomeScreen from './HomeScreen';
import FavoritesScreen from './FavoritesScreen';
const AppBottomTabNavigator = createBottomTabNavigator({
Home: {
screen: HomeScreen
},
Favorites: {
screen: FavoritesScreen
}
},
{
initialRouteName: 'Home',
});
export default createSwitchNavigator(
{
App: AppBottomTabNavigator,
Auth: SignInScreen
},
{
initialRouteName: 'SignInScreen',
}
);
屏幕/SignInScreen.js:
export default class SignInScreen extends React.Component {
render() {
return (
<View>
<Button title="Continue w/o sing in..." onPress={this.toApp} />
</View>
);
}
toApp = () => {
this.props.navigation.navigate('App'); // from here I try to navigate to Home screen
};
}
当我尝试从 SignInScreen 导航到 HomeScreen 时,我看到的是白屏而不是 HomeScreen,尽管所有其他导航都运行良好。
如果在 screen/AppNavigator.js 中我将 createBottomTabNavigator 更改为 createSwitchNavigator,则不会出现此问题,但不知道为什么。如果在 screen/AppNavigator.js 中我直接导航到 HomeScreen 或 FavoritesScreen 而不是 AppBottomTabNavigator,也不会出现问题。我在 github 上找到了这个线程,但据我所知,它与我无关,因为 AppBottomTabNavigator 和 SignInScreen 都是 AppNavigator 的子级。
那么,我的代码有什么问题?
解决方案
问题出在 de App.js 中。由于某种原因,您不能将 BottomTabNavitation 放在视图组件中,因此请删除。像这样:
export default class App extends React.Component {
render() {
return (
<AppContainer/>
);
}
}
您还应该更改 createSwitchNavigator 中的参数 initialRoutName。您必须输入 routName,在本例中为 Auth。
export default createSwitchNavigator(
{
App: AppBottomTabNavigator,
Auth: SignInScreen
},
{
initialRouteName: 'Auth',
}
);
推荐阅读
- spring - 如何使用 Reactor Flux 处理 CSV 文件并输出为 JSON
- c# - 可以自动运行和监视自定义 C++/C# 应用程序的多个实例吗?
- uart - PIC16F877A 与 SIM800L
- javascript - Javascript,将照片从相机(画布)存储到本地/服务器
- javascript - 如何使用 javasript 更改 woocommerce 结帐中的文本标签?
- excel - 如何使用 Oracle 查询将选择查询数据导出到 excel 文件中?
- python - Python Text searching does not match values
- c# - Revit API - Can't paint generated Direct Shapes
- javascript - Cypress testing: setting opacity for an element to 0 in a React app in order to hide it
- istio - 使用 Istio 设置自定义调用源标头