React Navigation 入門(二)
RN 版本:0.50
操作環境:Windows 10
React Navigation 版本:1.0.0-beta.20
在上一篇文章《StackNavigator 快速入門》中,介紹了 StackNavigator 的快速使用方法,本篇在其基礎上進行補充,對 StackNavigator 進行更加詳細的介紹。
StackNavigator 的介紹
我們依然是先寫個首頁用來展示:
export default class HomeScreen extends Component {
static navigationOptions = {
title: 'Welcome'
}
render() {
return <Text>Hello, Chat App!</Text>;
}
}
然後通過 StackNavigator 進行註冊:
const RootNavigator = StackNavigator({
Home: {
screen: HomeScreen,
}
});
可以發現,這裡設定 title 的方式和上一篇不一樣了。上一篇中,我們在對 HomeScreen 進行註冊的時候進行了 headerTitle
的設定,就像下面這樣。
const RootNavigator = StackNavigator({
Home: {
screen: HomeScreen,
navigationOptions: {
headerTitle: 'Home'
}
});
而在這篇文章中,我們把 navigationOptions
單獨拿了出來寫成了一個靜態變數。這種寫法也是可以的,當通過 StackNavigator
載入到 Home
頁面的時候,會自動找到這個變數讀取它的各個引數並應用在 Home
頁面上。就像元件的生命週期剛開始的時候會先讀取 static defaultProps
中的預設屬性。
另外在這裡 headerTitle
與 title
的效果是一樣的,都是頂部 ‘ToolBar’ 的標題。它們兩個具體有什麼區別,打算在下一篇文章再做介紹。效果圖直接用官網的。
新增一個新的頁面
這個在上一篇文章也已經說過了,如果你看過上一篇文章,這裡隨便看看就好了。
我們新建一個 ChatScreen
頁面:
export default class ChatScreen extends Component {
static navigationOptions = {
title: 'Chat with Lucy',
}
render() {
return (
<View>
<Text>Chat with Lucy</Text>
</View>
);
}
}
然後在 HomeScreen
中新增一個按鈕使其被點選的時候能跳轉到 ChatScreen
。這裡我們就要用到 navigate
方法並且給它填入正確的 routeName
引數,我們這裡定義的是 Chat
。
export default class HomeScreen extends Component {
static navigationOptions = {
title: 'Welcome'
};
render() {
const {navigate} = this.props.navigation;
return <View>
<Text>Hello, Chat App!</Text>
<Button
onPress={() => navigate('Chat')}
title="Chat with Lucy"
/>
</View>
}
}
當然了,最最重要的不要忘記了在 StackNavigator
中進行註冊:
const RootNavigator = StackNavigator({
Home: {screen: HomeScreen},
Chat: {screen: ChatScreen}
});
現在,我們點選按鈕就可以進行頁面之間的切換了。
傳遞引數
任何頁面之間的切換都避免不了引數的傳遞。還記得 navigate(routeName, params, action)
方法的第二個引數嗎?params
就是要傳遞的引數。
render() {
const {navigate} = this.props.navigation;
return <View>
<Text>Hello, Chat App!</Text>
<Button
onPress={() => navigate('Chat', {user: 'Lucy'})}
title="Chat with Lucy"
/>
</View>
}
這裡我們給 ChatScreen
傳遞了一個值為 ‘Lucy’ 的字串 user
,然後就可以通過 this.props.navigation.state.params
來取到你想要的引數。
export default class ChatScreen extends Component {
// Nav options can be defined as a function of the screen's props:
// Nav options 可以被定義成一個頁面屬性的函式(原諒我英語太差)
// 格式就像下面這樣,你就可以取到 navigation 了
static navigationOptions = ({navigation}) => ({
title: `Chat with ${navigation.state.params.user}`,
});
render() {
// The screen's current route is passed in to `props.navigation.state`:
// 螢幕當前的路由被傳遞給了 `props.navigation.state`
const {params} = this.props.navigation.state;
return (
<View>
<Text>Chat with {params.user}</Text>
</View>
);
}
}
你可以改一下 user
的值,然後看看有什麼變化。
本文到此結束,下一篇打算詳細寫寫 StackNavigator
的各個屬性。
相關推薦
React Navigation 入門(二)
RN 版本:0.50 操作環境:Windows 10 React Navigation 版本:1.0.0-beta.20 在上一篇文章《StackNavigator 快速入門》中,介紹了 StackNavigator 的快速使用
02 React快速入門(二)——this的指向和資料修改問題
問題描述: 在react學習中,通過定義一個按鈕,然後為此按鈕繫結一個事件,此事件主要的功能就是使用者點選按鈕,就會在相應的頁面增加一個item選項。在程式碼層面來說,在程式碼裡的state下的list會增加一個數據,如下所示:  
React Navigation 入門(一)
RN 版本:0.50 操作環境:Windows 10 React Navigation 版本:1.0.0-beta.20 前言 Navigator(導航器)是用來進行場景(頁面)切換的元件,但是由於它的各種缺陷,從 0.4
(數字IC)低功耗設計入門(二)——功耗的分析
layout 變化 監視 merge obj source divide 傳播 總結 前面學習了進行低功耗的目的個功耗的構成,今天就來分享一下功耗的分析。由於是面向數字IC前端設計的學習,所以這裏的功耗分析是基於DC中的power compiler工具;更精確的功耗分析
React學習小結(二)
display lin body -a 頁面 return 有時 borde size 一、組件的嵌套 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UT
react常見問題(二)
radi ring str 嵌入 mat 相關 sage arch 人員 本部分主要為表單相關。 1.表單form的react使用流程。 A.引入antd插件,聲明FormItem import {Form} from ‘antd‘; const FormItem = Fo
Linux入門(二)
man linux終端 linux發行版本 linux文件系統初步 google高級用法 Linux常用的基礎命令1.發行版本2.CISC、RISC3.編譯和反編譯(GPL、LGPL、BSD)4.程序包管理5.文件系統初步終端設備虛擬終端圖形終端串行終端偽終端Linux的哲學思想6.開源協
Docker入門(二)
docker安裝 docker基礎命令 一、Docker相關概念1.Docker: namespace,cgroup: 解決方案: lxc,openvz lxc:linux containers docker最初就是lxc的封裝版本。 docker engine/docker server:輸
vue-cli入門(二)——項目結構
常用 作用 寫到 www. 簡單的 端口 server 標簽 emp 前言 在上一篇項目搭建文章中,我們已經下載安裝了node環境以及vue-cli,並且已經成功構建了一個vue-cli項目,那麽接下來,我們來梳理一下vue-cli項目的結構。 總體框架 一個vue-c
log4j2使用入門(二)——與不同日誌框架的適配
一個 slf4 core log4j 說明 不同 activemq 進行 -a 在上方中已經指出log4j2可以與不同的日誌框架進行適配,這裏舉一些實際應用進行說明: 1.比如我們在項目中使用了log4j2作為日誌器,使用了log4j-api2.6.2.jar和log4j
【轉】VBA編程入門(二)
mat 復雜 任務 遙控 一次 環境 box range 使用 詳解VBA編程是什麽 由 vietdung90 創建,最後一次修改 2016-10-19 直到 90 年代早期,使應用程序自動化還是充滿挑戰性的領域.對每個需要自動化的應用程序,人們不得不學習一種不
Hibernate入門 (二)三種狀態
依賴 區分 dia 讀取配置文件 hibernate conn null threads 定時 .大配置 方言 property name="dialect" 取值 自動構建表結構 property name="hbm2ddl" true con
PHP基礎入門(二)【PHP函數基礎】
就是 進行 size 自定義 取地址 代碼 功能 sha 有一種 PHP基礎入門(二)——函數基礎 了解 PHP基礎入門詳解(一) 後,給大家分享一下PHP的函數基礎。 這部分主要講的就是: 函數的聲明與使用、PHP中變量的作用域、靜態變量、函數的參數傳遞、變量函數
開源性能測試工具JMeter快速入門(二)
代碼 取模 .bat -h 斷言 調度 測試 格式 needed 目錄一、JMeter簡介二、JMeter功能介紹三、JMeter腳本四、關於JMeter小提示三、JMeter腳本1.測試計劃測試計劃是JMeter進行測試的起點 ,是其他JMeter測試元件的容器,每個測試
02-Linux基礎入門(二)
... man sso term 創建文件系統 www. lease linux系統 結果 一、命令必須掌握的命令:man,touch,ls,mkdir,cp,rm,mv,echo,pwd,cat,alias,unalias,head,tail,tree,rmdir想拿到高
Hibernate入門(二)
方式 分享 數據庫表 left use acl att commit cti 一、主鍵生成策略 1.主鍵的類型 自然主鍵: 把有特定業務含義的字段作為了主鍵 eg: 用戶的名字, 身份證號碼 代理主鍵: 把沒有特定業務含義的字段作為了主鍵 eg: id 開發
spring-data-jpa快速入門(二)——簡單查詢
ref spa data mail domain event cif open 寫實 一、方法名解析 1.引言 回顧HelloWorld項目中的dao接口 public interface GirlRepository extends JpaRepos
react-native 學習(二)
androi bsp ger net devel 瀏覽器 sim 百度 解決方法 上一節講到了 react-native的開發環境的配置,,這一節我門具體講講怎麽看樣式,怎麽調試 看樣式的話 有一個 神奇 react-native-developer tools(個人推薦,
Spring入門(二)— IOC註解、Spring測試AOP入門
兩種 cts his 工作 source print 編程 實現機制 工廠 一、Spring整合Servlet背後的細節 1. 為什麽要在web.xml中配置listener <listener> <listener-class>org.s
TypeScript入門(二)——函數新特性
轉化 index 例子 一半 func ets mat 方便 strong 一、TypeScript-Rest and Spread操作符 用來聲明任意數量的方法參數 ...args中的...就是Rest and Spread操作符。 例1: 聲明一個可以傳任意