react-navigation跨tab路由處理
一般應用都有跨tab跳轉的需求, 這就需要特別處理下路由. 下面是使用React-navigation
作為路由元件的一種方式.http://www.bijishequ.com/detail/369321
具體情境是: app分三大模組Home
主頁, Bill
賬單和Me
我的,
對應三個tab. 現在需求是 Home
push HomeTwo
, HomeTwo
push BillTwo
, BillTwo
返回到 Bill
賬單首頁.
首先選擇路由結構, 選擇使用最外層是StackNavigator
, 然後包含3個TabNavigator
和其他元件.
const Components = { HomeTwo: { screen: HomeTwo, path:'app/HomeTwo' }, HomeThree: { screen: HomeThree, path:'app/HomeThree' }, BillTwo: { screen: BillTwo, path:'app/BillTwo' }, BillThree: { screen: BillThree, path:'app/BillThree' }, } const Tabs = TabNavigator({ Home: { screen: Home, path:'app/home', navigationOptions: { tabBar: { label: '首頁', icon: ({tintColor}) => (<Image source={require('./images/home.png')} style={[{tintColor: tintColor},styles.icon]}/>), }, } }, Bill: { screen: Bill, path:'app/bill', navigationOptions: { tabBar: { label: '賬單', icon: ({tintColor}) => (<Image source={require('./images/bill.png')} style={[{tintColor: tintColor},styles.icon]}/>), }, } }, Me: { screen: Me, path:'app/me', navigationOptions: { tabBar: { label: '我', icon: ({tintColor}) => (<Image source={require('./images/me.png')} style={[{tintColor: tintColor},styles.icon]}/>), }, } } }, { tabBarPosition: 'bottom', swipeEnabled: false, animationEnabled: false, lazyLoad: false, backBehavior: 'none', tabBarOptions: { activeTintColor: '#ff8500', inactiveTintColor: '#999', showIcon: true, indicatorStyle: { height: 0 }, style: { backgroundColor: '#fff', }, labelStyle: { fontSize: 10, }, }, }); const Navs = StackNavigator({ Home: { screen: Tabs, path:'app/Home' }, Bill: { screen: Tabs, path:'app/Bill' }, Me: { screen: Tabs, path:'app/Me' }, ...Components }, { initialRouteName: 'Home', navigationOptions: { header: { style: { backgroundColor: '#fff' }, titleStyle: { color: 'green' } }, cardStack: { gesturesEnabled: true } }, mode: 'card', headerMode: 'screen' });
在HomeTwo
裡使用react-navigation
自帶的reset
action
就可以重置路由資訊了:
// push BillTwo this.props.navigation.dispatch(resetAction); // 使用reset action重置路由 const resetAction = NavigationActions.reset({ index: 1, // 注意不要越界 actions: [ // 棧裡的路由資訊會從 Home->HomeTwo 變成了 Bill->BillTwo NavigationActions.navigate({ routeName: 'Bill'}), NavigationActions.navigate({ routeName: 'BillTwo'}) ] });
從HomeTwo
push 到 BillTwo
頁面後,
點選BillTwo
的左上角導航按鈕返回就能返回到Bill
賬單首頁了.
http://www.bijishequ.com/detail/369321
具體情境是: app分三大模組Home
主頁, Bill
賬單和Me
我的,
對應三個tab. 現在需求是 Home
push HomeTwo
, HomeTwo
push BillTwo
, BillTwo
返回到 Bill
賬單首頁.
首先選擇路由結構, 選擇使用最外層是StackNavigator
, 然後包含3個TabNavigator
和其他元件.
const Components = { HomeTwo: { screen: HomeTwo, path:'app/HomeTwo' }, HomeThree: { screen: HomeThree, path:'app/HomeThree' }, BillTwo: { screen: BillTwo, path:'app/BillTwo' }, BillThree: { screen: BillThree, path:'app/BillThree' }, } const Tabs = TabNavigator({ Home: { screen: Home, path:'app/home', navigationOptions: { tabBar: { label: '首頁', icon: ({tintColor}) => (<Image source={require('./images/home.png')} style={[{tintColor: tintColor},styles.icon]}/>), }, } }, Bill: { screen: Bill, path:'app/bill', navigationOptions: { tabBar: { label: '賬單', icon: ({tintColor}) => (<Image source={require('./images/bill.png')} style={[{tintColor: tintColor},styles.icon]}/>), }, } }, Me: { screen: Me, path:'app/me', navigationOptions: { tabBar: { label: '我', icon: ({tintColor}) => (<Image source={require('./images/me.png')} style={[{tintColor: tintColor},styles.icon]}/>), }, } } }, { tabBarPosition: 'bottom', swipeEnabled: false, animationEnabled: false, lazyLoad: false, backBehavior: 'none', tabBarOptions: { activeTintColor: '#ff8500', inactiveTintColor: '#999', showIcon: true, indicatorStyle: { height: 0 }, style: { backgroundColor: '#fff', }, labelStyle: { fontSize: 10, }, }, }); const Navs = StackNavigator({ Home: { screen: Tabs, path:'app/Home' }, Bill: { screen: Tabs, path:'app/Bill' }, Me: { screen: Tabs, path:'app/Me' }, ...Components }, { initialRouteName: 'Home', navigationOptions: { header: { style: { backgroundColor: '#fff' }, titleStyle: { color: 'green' } }, cardStack: { gesturesEnabled: true } }, mode: 'card', headerMode: 'screen' });
在HomeTwo
裡使用react-navigation
自帶的reset
action
就可以重置路由資訊了:
// push BillTwo
this.props.navigation.dispatch(resetAction);
// 使用reset action重置路由
const resetAction = NavigationActions.reset({
index: 1, // 注意不要越界
actions: [ // 棧裡的路由資訊會從 Home->HomeTwo 變成了 Bill->BillTwo
NavigationActions.navigate({ routeName: 'Bill'}),
NavigationActions.navigate({ routeName: 'BillTwo'})
]
});
從HomeTwo
push 到 BillTwo
頁面後,
點選BillTwo
的左上角導航按鈕返回就能返回到Bill
賬單首頁了.
一般應用都有跨tab跳轉的需求, 這就需要特別處理下路由. 下面是使用React-navigation
作為路由元件的一種方式.http://www.bijishequ.com/detail/369321
具體情境是: app分三大模組Home
主頁, Bill
賬單和Me
我的,
對應三個tab. 現在需求是 Home
push HomeTwo
, HomeTwo
push BillTwo
, BillTwo
返回到 Bill
賬單首頁.
首先選擇路由結構, 選擇使用最外層是StackNavigator
, 然後包含3個TabNavigator
和其他元件.
const Components = {
HomeTwo: { screen: HomeTwo, path:'app/HomeTwo' },
HomeThree: { screen: HomeThree, path:'app/HomeThree' },
BillTwo: { screen: BillTwo, path:'app/BillTwo' },
BillThree: { screen: BillThree, path:'app/BillThree' },
}
const Tabs = TabNavigator({
Home: {
screen: Home,
path:'app/home',
navigationOptions: {
tabBar: {
label: '首頁',
icon: ({tintColor}) => (<Image source={require('./images/home.png')} style={[{tintColor: tintColor},styles.icon]}/>),
},
}
},
Bill: {
screen: Bill,
path:'app/bill',
navigationOptions: {
tabBar: {
label: '賬單',
icon: ({tintColor}) => (<Image source={require('./images/bill.png')} style={[{tintColor: tintColor},styles.icon]}/>),
},
}
},
Me: {
screen: Me,
path:'app/me',
navigationOptions: {
tabBar: {
label: '我',
icon: ({tintColor}) => (<Image source={require('./images/me.png')} style={[{tintColor: tintColor},styles.icon]}/>),
},
}
}
}, {
tabBarPosition: 'bottom',
swipeEnabled: false,
animationEnabled: false,
lazyLoad: false,
backBehavior: 'none',
tabBarOptions: {
activeTintColor: '#ff8500',
inactiveTintColor: '#999',
showIcon: true,
indicatorStyle: {
height: 0
},
style: {
backgroundColor: '#fff',
},
labelStyle: {
fontSize: 10,
},
},
});
const Navs = StackNavigator({
Home: { screen: Tabs, path:'app/Home' },
Bill: { screen: Tabs, path:'app/Bill' },
Me: { screen: Tabs, path:'app/Me' },
...Components
}, {
initialRouteName: 'Home',
navigationOptions: {
header: {
style: {
backgroundColor: '#fff'
},
titleStyle: {
color: 'green'
}
},
cardStack: {
gesturesEnabled: true
}
},
mode: 'card',
headerMode: 'screen'
});
在HomeTwo
裡使用react-navigation
自帶的reset
action
就可以重置路由資訊了:
// push BillTwo
this.props.navigation.dispatch(resetAction);
// 使用reset action重置路由
const resetAction = NavigationActions.reset({
index: 1, // 注意不要越界
actions: [ // 棧裡的路由資訊會從 Home->HomeTwo 變成了 Bill->BillTwo
NavigationActions.navigate({ routeName: 'Bill'}),
NavigationActions.navigate({ routeName: 'BillTwo'})
]
});
從HomeTwo
push 到 BillTwo
頁面後,
點選BillTwo
的左上角導航按鈕返回就能返回到Bill
賬單首頁了.
http://www.bijishequ.com/detail/369321
具體情境是: app分三大模組Home
主頁, Bill
賬單和Me
我的,
對應三個tab. 現在需求是 Home
push HomeTwo
, HomeTwo
push BillTwo
, BillTwo
返回到 Bill
賬單首頁.
首先選擇路由結構, 選擇使用最外層是StackNavigator
, 然後包含3個TabNavigator
和其他元件.
const Components = {
HomeTwo: { screen: HomeTwo, path:'app/HomeTwo' },
HomeThree: { screen: HomeThree, path:'app/HomeThree' },
BillTwo: { screen: BillTwo, path:'app/BillTwo' },
BillThree: { screen: BillThree, path:'app/BillThree' },
}
const Tabs = TabNavigator({
Home: {
screen: Home,
path:'app/home',
navigationOptions: {
tabBar: {
label: '首頁',
icon: ({tintColor}) => (<Image source={require('./images/home.png')} style={[{tintColor: tintColor},styles.icon]}/>),
},
}
},
Bill: {
screen: Bill,
path:'app/bill',
navigationOptions: {
tabBar: {
label: '賬單',
icon: ({tintColor}) => (<Image source={require('./images/bill.png')} style={[{tintColor: tintColor},styles.icon]}/>),
},
}
},
Me: {
screen: Me,
path:'app/me',
navigationOptions: {
tabBar: {
label: '我',
icon: ({tintColor}) => (<Image source={require('./images/me.png')} style={[{tintColor: tintColor},styles.icon]}/>),
},
}
}
}, {
tabBarPosition: 'bottom',
swipeEnabled: false,
animationEnabled: false,
lazyLoad: false,
backBehavior: 'none',
tabBarOptions: {
activeTintColor: '#ff8500',
inactiveTintColor: '#999',
showIcon: true,
indicatorStyle: {
height: 0
},
style: {
backgroundColor: '#fff',
},
labelStyle: {
fontSize: 10,
},
},
});
const Navs = StackNavigator({
Home: { screen: Tabs, path:'app/Home' },
Bill: { screen: Tabs, path:'app/Bill' },
Me: { screen: Tabs, path:'app/Me' },
...Components
}, {
initialRouteName: 'Home',
navigationOptions: {
header: {
style: {
backgroundColor: '#fff'
},
titleStyle: {
color: 'green'
}
},
cardStack: {
gesturesEnabled: true
}
},
mode: 'card',
headerMode: 'screen'
});
在HomeTwo
裡使用react-navigation
自帶的reset
action
就可以重置路由資訊了:
// push BillTwo
this.props.navigation.dispatch(resetAction);
// 使用reset action重置路由
const resetAction = NavigationActions.reset({
index: 1, // 注意不要越界
actions: [ // 棧裡的路由資訊會從 Home->HomeTwo 變成了 Bill->BillTwo
NavigationActions.navigate({ routeName: 'Bill'}),
NavigationActions.navigate({ routeName: 'BillTwo'})
]
});
從HomeTwo
push 到 BillTwo
頁面後,
點選BillTwo
的左上角導航按鈕返回就能返回到Bill
賬單首頁了.
相關推薦
react-navigation跨tab路由處理
一般應用都有跨tab跳轉的需求, 這就需要特別處理下路由. 下面是使用React-navigation作為路由元件的一種方式.http://www.bijishequ.com/detail/369321 具體情境是: app分三大模組Home主頁, Bill賬單和Me我
react-navigation 導航、路由
outer dsta one erp 頁面設置 png stack raw params 1,首先,下載,安裝,引入react-navigation npm install --save react-navigation 或者 yarn add rea
react-native react-navigation的用法 react native 導航路由元件react-navigation的使用
一、問題背景 react-navigation是react-native官方推薦的,基於Javascript的可擴充套件且使用簡單的導航,功能強大且完備 回顧一下,react-navigation包含以下功能來幫助我們建立導航器: StackN
React Native入門篇—react-navigation路由配置
本人學習React Native沒有看過任何教學視訊,都是按照官網一步步學習的。只研究了Android開發,所以下面的教程都是Android開發教程。 注意:未經允許不可私自轉載,違者必究 React Native官方文件:https://reactnative.cn/docs
React Navigation 的使用基礎部分(四)向路由傳值
原文連結還記得我們之前說過"我們講引數的時候會詳細說明"嗎?是的,就是現在。現在我們知道怎樣建立一個包含若干路由的棧導航器,還知道了在路由之間跳轉,現在讓我們來看看跳轉時怎樣向路由傳遞資料。有兩點:可以將引數放進物件中,作為navigation.navigate的第二個引數來
React Navigation--Stack Navigator and Tab Navigator聯合使用
/** * Created by YiBing on 2017/5/4. */ import React from 'react'; import { AppRegistry, Text, Button, View, } from 'r
react-navigation的多次點擊重復跳轉同一頁面、不在堆棧路由頁面使用navigation方法的解決思路
xtend iss 需要 點擊 定義 cti 並不是 navi 而是 一、react-navigation的初使用 createStackNavigator ==> createSwitchNavigator ==> createAppContaine
react-navigation android 導航標題居中
mmu github tile reac oid comm and roi image 先貼下代碼供參考: 安卓默認導航的titile 是在左側的,為了和iOS保持一致,需要添加 alignSelf:‘center‘,這個 屬性 但是會遇到title有點偏右的情況 添
FPGA中亞穩態相關問題及跨時鐘域處理
設計 時鐘 比特 產生 solution 至少 nbsp 觸發器 路徑規劃 前言 觸發器輸入端口的數據在時間窗口內發生變化,會導致時序違例。觸發器的輸出在一段時間內徘徊在一個中間電平,既不是0也不是1。這段時間稱為決斷時間(resolution time)。經過resolu
react navigation傳值給上一頁面
reac 組件 .get value cto oba info state getpara 使用新的導航組件react navigation,傳值方式略微發生了一些改變 A頁面到B頁面 pushaddremark(){ let _this=this;
react-navigation
ret enable ons mil 滑動切換 定義 使用 one animation TabNavigator的使用 定義一個整體的tab屬性 import {TabNavigator,StackNavigator,TabBarBottom} from ‘re
React Navigation-(Qucik Start)快速開始
const 例如 json 抽屜 開始 新的 ans tail pos 快速開始 要開始使用React Navigation,您只需安裝 react-navigation npm包 npm install --save react-navigation yarn add
react-native導航器 react navigation 介紹
開發環境搭建 部署 ica sam native 找不到 組件 getting start 開發環境搭建好之後,想要進一步了解react-native,可以先從react-native官網上的電影列表案例入手: https://reactnative.cn/docs/0
react-navigation 簡介
tor 方式 一個 justify 深度 哪些 區別 view avi StackNavigator: 原理和瀏覽器相似但又有局限,瀏覽器的方式是開放性的,通過點擊一個鏈接可以跳轉到任何頁面(push),點擊瀏覽器後退按鈕,返回到前一個頁面(pop)。StackNavig
Django 跨域請求處理
中間件 不同 解決 span http als todo 分享 title 參考https://blog.csdn.net/qq_27068845/article/details/73007155 http://blog.51cto.com/aaronsa/2071108
ajax跨域的處理方法
type callback xhtml header 文件 處理 相同 jsonp 服務器 當我們在開發項目的時候,一般我們會使用ajax請求數據,但是在使用ajax的時候會出現跨域的問題。 為什麽會出現跨域的問題呢? 跨域的問題的出現是來源於JavaScript的同源策略
react中鍵盤enter事件處理
ons rip form tde RM react nbsp 實現 classname 對於常見的搜索需求業務場景,用戶輸入完成後,點擊enter事件請求數據,要求不提交頁面,實現數據局部更新,這需要用到react中的表單Forms。 處理方法: (1)html書寫 for
react-router 4.x 路由按需加載
HA sync tac roo ID rem route RR fig react-router 4 代碼分割(按需加載) 官方文檔 https://serverless-stack.com/chapters/code-splitting-in-create-react-
react-navigation設置navigationOptions中Static中使用 this 的方法
IT 需要 target style ati ams screen AR 操作 使用react-navigation時,單頁面設置navigationOptions中,進行Static中 調用this 中的方法或值時,需要做如下操作 static naviga
react axios 跨域問題
douban 問題 base bpa 文件創建 eee ade orm for 周末又是補充知識點的時候了,用了react axios 跨越問題,貌似是要比vue 稍微麻煩一點 它請求http好像是沒有問題的,但是https還是有跨域問題的, 我用的剛好是create-re