刚开始学习ReactNative,没有JS基础,慢慢爬坑吧。
主要说StackNavigator碰到的两个问题:
(1)route should declare a screen
const Navi = StackNavigator({
Login: {screen: Login},
Skill: {screen: Skill}
},{
initialRouteName: 'Login'
});
Login: {screen: Login},
这一行会报错,网上查了很多资料,说是export import的原因,但是试了,发现不是那回事。然后还有说是Login还没有定义就被调用了,需要swap一下Navi和Login的顺序,感觉有道理,但是不知道该怎么做,于是只好把Navi和Login放在一个JS里面:
//上面是Login的界面代码,就不贴了
const Navi = StackNavigator({
Login: {screen: Login},
Skill: {screen: Skill}
},{
initialRouteName: 'Login'
});
AppRegistry.registerComponent('Stormorai', () =>Navi);
So,坑一被填上了。
(2)Route ‘XXX’undefined is not an object
报错的代码:
const {navigate} =this.props.navigation;
对于这个问题,试过的方法有constructor,super这类都没有用,这个问题纠结的时间最长,附上解决方法:
const Login= ({navigation}) =>(
//View的界面显示代码这里就省略了,只贴上Button跳转的代码
<Button title="登录" color="blue" onPress={() => navigation.navigate('Skill')}/>
);
终于,这个坑也填上了,终于用上了最流弊的‘react-navigation’的StackNavigator,页面也可以正常跳转了。看到很多文档class login,之前就是这样纠结了很久,不知道大神们是怎么实现的,如果知道麻烦顺便告诉我一下。