我在我的react-native项目中使用ReactNavigation库,6个小时以来,我一直在尝试从一个屏幕导航到其他屏幕,并尝试了所有可能的方法,但我认为我无法正确获得逻辑。这是我的项目结构。
Here
我现在的做法。
const AppStack = StackNavigator({ Main: Feeds });
const AuthStack = StackNavigator({ Launch: LaunchScreen, });
export default SwitchNavigator({
Auth: AuthStack,
App: AppStack
});
在我的启动屏幕. js中
const SimpleTabs = TabNavigator(
{
Login: {
screen: Login,
path: ""
},
SignUp: {
screen: SignUp,
path: "doctor"
}
},
);
<SimpleTabs screenProps={{rootNavigation : this.props.navigation }}/>
但问题是,在我的LaunchScreen组件中,有一个TabNavigator,其中包含我的另外两个组件Login.js和SignUp.js,但Login.js中的按钮无法将其导航到Feed.js。
单击按钮时,将执行此操作。
signInAsync = async () => {
await AsyncStorage.setItem('userToken', 'abc');
this.props.navigation.navigate('Main');
console.log("AAAAAsSSS");
};
我的LaunchScreen.js包含一个TabNavigation,它允许您在两个组件(即Login.js和SignUp.js)之间滑动。
现在,当您单击Login.js组件中的Login按钮时,它将对用户进行身份验证,并将切换整个LauchScreen.js组件与Feed.js组件。
我是一个React迟钝的人。
4条答案
按热度按时间nwsw7zdq1#
您可以使用react-native-router-flux
(npm install --save react-native-router-flux)
只需创建一个Navigator.js文件并定义要导航的每个页面。
现在在App.js文件中添加以下内容:
现在在你的login.js当你点击登录按钮写这个:
就是这样...快乐编码。
slsn1g292#
如果要导航到
Feeds.js
,请使用this.props.navigation.navigate('App');
进行导航不作为
this.props.navigation.navigate('Main');
因为你的
参考example
4zcjmb1e3#
几个月前我遇到了同样的问题,感谢上帝,你只花了6个小时,我几乎花了4天的时间来寻找解决方案。
谈到这个问题,请注意,在React导航中,您可以导航到兄弟类或子类。
所以在这里,你有一个swtichNavigator,其中包含2个堆栈导航器(如堆栈1和堆栈2),堆栈1有饲料和堆栈2有一个标签导航器登录和注册.
现在你想从login.js导航到feeds.js(假设文件名是feeds.js),正如已经提到的,你不能导航回父节点或祖节点,那么如何解决这个问题呢?
在react native中,你有权限将params(screenprops)从父节点传递给子节点。使用这个权限,你需要将launchScreen的
this.props.navigation
存储到一个变量中,并将其传递给tab/login(检查树结构)。现在在login.js中使用这个变量来导航。您只是将导航权限从父级传递给子级。
在此编辑:
在这里,InnerTab是选项卡导航器。
},
在login类中,使用
const { navigate } = this.props.screenProps.rootNavigation;
现在可以使用变量navigate
。我知道这有点难以理解,但我已经试过了,它起作用了。
vuktfyat4#
按如下所示编写Navigator.js文件,
一旦完成了将App.js文件更改为,
在这之后,你就完成了对你的项目的导航设置。在所有你想添加导航特性的组件中,确保你使用了
navigation.navigate()
(或)navigation.push()
方法。同时确保你通过导入useNavigation
库来挂钩navigation
常量。例如,有了这个代码片段,你可以使用
@react-navigation/native
和@react-navigation/stack
实现屏幕之间的导航