摘要:是一款第三方導(dǎo)航組件。你可以通過(guò)它進(jìn)行合理的視圖組織。使用修改的你的如果是修改對(duì)應(yīng)文件即可。請(qǐng)記住必須在頂級(jí)路由中使用,如果你的鏈接潛入在多個(gè)組件中,你必須確保它能夠冒泡到它的父級(jí)。其他組件推薦本文同步自己的博客
React Native Simple Router是一款第三方導(dǎo)航組件。你可以通過(guò)它進(jìn)行合理的視圖組織。
項(xiàng)目地址
安裝進(jìn)入你的項(xiàng)目目錄,如過(guò)沒(méi)有初始化項(xiàng)目可以react-native init your_project,然后在項(xiàng)目目錄安裝react-native-simple-router。
npm install react-native-simple-router --save使用
import Router from "react-native-simple-router";
修改的你的index.ios.js,如果是Android修改對(duì)應(yīng)文件即可。
import React, { StyleSheet } from "react-native"; // 初始化頁(yè)面 class HelloPage extends React.Component { render() { returnHello world! ; } } const styles = StyleSheet.create({ header: { backgroundColor: "#5cafec", }, }); // 在這里定義你的路由 // - 其中name 將會(huì)成會(huì)頂部導(dǎo)航條的標(biāo)題內(nèi)容 // - `component`用于渲染頁(yè)面的組件 const firstRoute = { name: "Welcome!", component: HelloPage, }; class MyApp extends React.Component { render() { return (); } } AppRegistry.registerComponent("routerTest", () => MyApp);
接下來(lái)你可以加入更多頁(yè)面,你可以通過(guò)this.props.toRoute()導(dǎo)航至另外一個(gè)組件。
我們定義另外一個(gè)頁(yè)面next.js,代碼很簡(jiǎn)單:
"use strict"; var React = require("react-native"); var { StyleSheet, View, Text, Image, TextInput, Component } = React; var styles = StyleSheet.create({ container: { flex: 1, justifyContent: "center", alignItems: "center", backgroundColor: "#F5FCFF", }, welcome: { fontSize: 20, textAlign: "center", margin: 10, }, instructions: { textAlign: "center", color: "#333333", marginBottom: 5, }, }); class Next extends Component { constructor(props){ super(props); } render() { var me = this; return (); } } module.exports = Next; Welcome to Next Page!
index.ios.js中主要加入下面方法
import React, { StyleSheet, PropTypes } from "react-native"; var Next = require("./next"); const propTypes = { toRoute: PropTypes.func.isRequired, }; class HelloPage extends React.Component { constructor(props) { super(props); this.nextPage = this.nextPage.bind(this); } nextPage() { this.props.toRoute({ name: "next screen", component: Next }); } render() { return (); } } HelloPage.propTypes = propTypes; Next page please!
這個(gè)時(shí)候我們點(diǎn)擊 next page 即可導(dǎo)航至next頁(yè)面。請(qǐng)記住this.props.toRoute()必須在頂級(jí)路由中使用,如果你的鏈接潛入在多個(gè)組件中,你必須確保它能夠冒泡到它的父級(jí)。
配置firstRoute(必須): 你導(dǎo)航的首頁(yè)
headerStyle: 改變你導(dǎo)航條的背景樣式
titleStyle:改變導(dǎo)航條里的文字樣式
bgStyle: 改變所有路由的背景樣式
borderBottomWidth: 底部導(dǎo)航條的寬度
backButtonComponent:默認(rèn)導(dǎo)航條會(huì)呈現(xiàn)一個(gè)back 文本的返回按鈕,當(dāng)然你可以自定義設(shè)置的組件
customAction:
hideNavigationBar: 隱藏導(dǎo)航條
statusBarProps:默認(rèn)獲取狀態(tài)欄的props,可以參考StatusBar Docs.
+
this.props.toRoute()需要傳入一個(gè)對(duì)象作為參數(shù)設(shè)置 。
name:路由的名稱(chēng),也會(huì)被用在導(dǎo)航條的文本顯示
component(必須):需要渲染的組件
leftCorner: 從導(dǎo)航左邊開(kāi)始開(kāi)始渲染
rightCorner:則是從右邊渲染相關(guān)組件
titleComponent:指定一個(gè)組件用于替換標(biāo)題,類(lèi)似Ins的第一頁(yè)
headerStyle: 指定新渲染組件的導(dǎo)航條樣式,你可以指定一個(gè)背景色,然后路由轉(zhuǎn)換是會(huì)平滑過(guò)渡
passProps:帶入一組參數(shù),通常是一個(gè)對(duì)象key-value給新的組件
titleProps:如果你設(shè)置了title為一個(gè)組件,這樣你可以把titleProps的值傳入進(jìn)去。
sceneConfig:控制轉(zhuǎn)場(chǎng)動(dòng)畫(huà),常見(jiàn)的參數(shù)如下:
Navigator.SceneConfigs.FadeAndroid Navigator.SceneConfigs.FloatFromBottom Navigator.SceneConfigs.FloatFromBottomAndroid Navigator.SceneConfigs.FloatFromLeft Navigator.SceneConfigs.FloatFromRight Navigator.SceneConfigs.HorizontalSwipeJump Navigator.SceneConfigs.PushFromRight Navigator.SceneConfigs.VerticalDownSwipeJump Navigator.SceneConfigs.VerticalUpSwipeJump
更多屬性參考可以參閱這里
this.props.replaceRoute的參數(shù)設(shè)置和toRoute一致,但是二者的區(qū)別在于toRoute會(huì)加入到你的堆棧中,而replaceRoute它將會(huì)替換當(dāng)前所在的路由。
如果你是在登錄或者登出的功能,使用replaceRoute會(huì)好過(guò)直接再導(dǎo)航至該路由。
this.props.resetToRoute與toRoute()傳入的參數(shù)一致,而它的差異在于,它會(huì)替換掉當(dāng)前的路由并且清空導(dǎo)航。如果你登錄成功或者注冊(cè)成功后,你并不希望退后,使用resetToRoute則會(huì)非常有用。
案例 Twitter App一個(gè)簡(jiǎn)單的模仿twitter 的 應(yīng)用,你可以直接使用它,并借鑒它的寫(xiě)法。
import React, { AppRegistry } from "react-native"; import TwitterApp from "./node_modules/react-native-simple-router/examples/twitter-example"; AppRegistry.registerComponent("routerTest", () => TwitterApp);Explorer app
在node_modules/react-native-simple-router/examples/Explorer里面還有一個(gè)Demo,安裝依賴(lài)后便可以運(yùn)行.
我們可以大致參考作者的目錄架構(gòu)
+ images/ + style + css + icons + components + service + pages + ios + android - index.ios.js - index.android.js ...反饋
react-native-simple-router實(shí)際來(lái)源于react-native-router,但是作者不再更新,因此我們遷移過(guò)來(lái),不過(guò)你依舊可以在原來(lái)issues找到你有可能遇到的問(wèn)題的答案。
其他組件推薦React-Native-Router
React-Native-Button
react-native-gifted-listview
react-native-scrollable-tab-view
本文同步自己的博客:http://www.jackpu.com/shi-yong-react-native-simple-router-zu-zhi-ni-de-react-native-ye-mian/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79003.html
摘要:除此之外,部分頁(yè)面,其實(shí)完全可以由網(wǎng)頁(yè)去支持多端共用的功能,樓主親身遇到過(guò)的場(chǎng)景,就是圖表的繪制,我們的方案是一個(gè)頁(yè)面,需要微信,手機(jī)網(wǎng)頁(yè),和都具備該功能,而且我們手機(jī)網(wǎng)頁(yè)和客戶端打開(kāi)的稍微有區(qū)別,需要隱藏。 showImg(https://segmentfault.com/img/bVzxDW); 相信好多寫(xiě)React Native的都是前端出身,當(dāng)然遇見(jiàn)問(wèn)題的,也很多時(shí)候會(huì)想從前端...
摘要:跟非常相似,但是在開(kāi)始嘗試你第一個(gè)之前,也需要了解兩者之間的一些差異。推薦的方式是使用提供的。能用到組件中的或者上以啟用這個(gè)組件的觸摸事件。 華翔,Web前端開(kāi)發(fā)工程師著作權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)。 showImg(https://segmentfault.com/img/bVUliz?w=640&h=235); React-Native已經(jīng)誕生有兩年左右了,自從適配了An...
摘要:我們來(lái)看看文檔上是怎么說(shuō)的吧在中,你并不需要學(xué)習(xí)什么特殊的語(yǔ)法來(lái)定義樣式。我們?nèi)匀皇鞘褂脕?lái)寫(xiě)樣式。這些樣式名基本上是遵循了上的的命名,只是按照的語(yǔ)法要求使用了駝峰命名法,例如將改為。 我遇到了什么問(wèn)題? 不久之前我重構(gòu)了一個(gè)古老的項(xiàng)目,總結(jié)了一些js方面的想法,不過(guò)對(duì)于一個(gè)前端項(xiàng)目而言不僅僅只由js組成的嘛,上學(xué)的時(shí)候老師和我說(shuō)HTML+CSS+JS對(duì)應(yīng)的是頁(yè)面的骨架、皮膚和肌肉。既然...
閱讀 530·2023-04-26 00:33
閱讀 3552·2021-11-24 09:39
閱讀 2960·2021-09-22 15:34
閱讀 2332·2019-08-23 18:07
閱讀 2926·2019-08-23 18:04
閱讀 3713·2019-08-23 16:06
閱讀 2904·2019-08-23 15:27
閱讀 1626·2019-08-23 14:32