react-navigation使用之嵌套和跳轉

1. 新版react-native已經將react-navigation做爲官方版本發佈,基礎Demo能夠從官方網站得到,比較困擾的問題是組件的嵌套和第2、第三頁面的跳轉。react

2. 組件嵌套問題:react-native

要在父組件定義出指定父組件的router=子組件的router;同時,在子組件賦值navigation屬性。函數

class AllContactsScreen extends React.Component {
    render() {return (
            <View>
                <Text>List of all contacts</Text>
                <ItemBlock title="hello world" navigation={this.props.navigation}/>
            </View>
        );
    }
}
AllContactsScreen.router = ItemBlock.router;

在子組件中定義跳轉函數,子組件的代碼以下:網站

export default class ItemBlock extends Component{
    render(){return(
            <View>
                <Button
                    onPress={this.click.bind(this)}
                    title="Chat with Lily"
                />
            </View>
        );
    }
    click(){
        const { navigate } = this.props.navigation;
        navigate('Chat');     }
}

3. 第2、第三頁面的跳轉,也是在定義StackNavigator時指定,StackNavigator只定義一次。this

const SimpleApp = StackNavigator({
    Home: {
        screen: MainScreenNavigator,
        navigationOptions: {
            title: 'My Chats',
        },
    },
    Chat: { screen: ChatScreen },
    ChatDetail: {screen: ChatDetail}
})

第二頁面的代碼以下:spa

export  default  class ChatScreen extends React.Component {
    static navigationOptions = {
        title: 'Chat with Lucifa',
    };
    render() {
        return(
            <View>
                <Button
                    onPress={this.click.bind(this)}
                    title="Chat with Lucky"
                />
            </View>
        );
    }
    click(){
        const { navigate } = this.props.navigation;
        navigate('ChatDetail');
    }
}

第三頁面就能夠隨便寫了。code

以上。router

相關文章
相關標籤/搜索