1. 程式人生 > >記錄一下學習ReactNative爬過的坑——StackNavigator

記錄一下學習ReactNative爬過的坑——StackNavigator

剛開始學習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,之前就是這樣糾結了很久,不知道大神們是怎麼實現的,如果知道麻煩順便告訴我一下。