【新人手冊】【中文文檔】【使用案例】React Navigation入門教程(一):Hello World,React Navigation!

本文首發(fā)于博客:http://www.goody365.com/?p=39

第一節(jié),我們用React Navigation來構(gòu)建一個簡單的聊天應(yīng)用,比如類似微信這樣的。

第一步:安裝

首先要確定你已經(jīng)安裝好了所有RN的基礎(chǔ)環(huán)境。

然后,創(chuàng)建一個新的項目,并且添加react navigation相關(guān)的包和類庫。具體執(zhí)行的步驟如下

# Create a new React Native App

react-native init SimpleApp

cd SimpleApp

# Install the latest version of react-navigation from npm

npm install --save react-navigation

# Run the new app

react-native run-android # or:

react-native run-ios

因為我們需要寫一套代碼同時運行在IOS和安卓上面,為了做到這一點我們把index.ios.js和index.android.js中的代碼刪除掉,然后用

import './App';

來替代

第二部分:導(dǎo)航棧介紹

為了向大家介紹導(dǎo)航棧的概念,我們在項目中嘗試使用一下。

顧名思義,導(dǎo)航棧,就是讓我們每開一屏,都放在原有的已經(jīng)展現(xiàn)過的屏的棧之上。從當(dāng)前屏幕返回的過程也是將該屏出棧的過程

我們先寫個單屏應(yīng)用?!敬a來自官網(wǎng)英文文檔】

importReactfrom'react';import{AppRegistry,Text,}from'react-native';import{StackNavigator}from'react-navigation';classHomeScreenextendsReact.Component{staticnavigationOptions={title:'Welcome',};render(){returnHello,Navigation!;}}constSimpleApp=StackNavigator({Home:{screen:HomeScreen},});AppRegistry.registerComponent('SimpleApp',()=>SimpleApp);

在上面的例子中,屏幕的標(biāo)題可以在靜態(tài)屬navigationOptions,中設(shè)置。這個屬性可以用來管理屏幕的表現(xiàn)形式

第三部:新增一個展現(xiàn)的屏幕

在App.js中新增如下代碼:

classChatScreenextendsReact.Component{staticnavigationOptions={title:'Chat with Lucy',};render(){return(ChatwithLucy);}}

然后在HomeScreen上添加一個按鈕 ,用routeNameChat.連接到ChatScreen。

classHomeScreenextendsReact.Component{staticnavigationOptions={title:'Welcome',};render(){const{navigate}=this.props.navigation;return(Hello,Chat App!navigate('Chat')}title="ChatwithLucy"/>);}}

這里是用了screen navigation prop來實現(xiàn)的屏幕跳轉(zhuǎn),但是要想讓上面的代碼起作用,還需要添加如下的代碼

constSimpleApp=StackNavigator({Home:{screen:HomeScreen},Chat:{screen:ChatScreen},});

然后,你會在IOS上看到如下的效果。安卓也類似

第四步:在屏幕切換時傳遞參數(shù)

在ChatScreen中硬編碼寫死名字這種事情太強暴了,不好。比較溫柔性感的方式,我們當(dāng)然要動態(tài)的傳遞變量過去,然后渲染展現(xiàn)

比如,修改HomeScreen的代碼如下【注意對比與之前的不同,自己去搜索不同點的作用和意思】

classHomeScreenextendsReact.Component{staticnavigationOptions={title:'Welcome',};render(){const{navigate}=this.props.navigation;return(Hello,Chat App!navigate('Chat',{user:'Lucy'})}title="ChatwithLucy"/>);}}

跳轉(zhuǎn)來源方傳遞參數(shù)過來之后我們需要進行接收和渲染展示

classChatScreenextendsReact.Component{// Nav options can be defined as a function of the screen's props:staticnavigationOptions=({navigation})=>({title:`Chat with${navigation.state.params.user}`,});render(){// The screen's current route is passed in to `props.navigation.state`:const{params}=this.props.navigation.state;return(Chatwith{params.user});}}

當(dāng)然,最好的方式是改變一下傳遞的參數(shù),最好不要與例子里一樣。

做完上面的操作之后你就能看到下面的效果了。

---------------------------------------------------本節(jié)完--------------------

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容