react-navigation 2.x與redux 整合記錄

寫在前面

最近一直在學(xué)習(xí)react-native相關(guān)知識點(diǎn)两残,因需要使用react-navigation與redux集成兰怠,因此看了react-navigation官網(wǎng)關(guān)于redux集成的簡單demo椭住,但是因?yàn)槭菍懺谕粋€(gè)文件內(nèi)你辣,不利于理解與維護(hù)馅巷,因此,單獨(dú)分離出來到每個(gè)文件格粪。在網(wǎng)上搜了很多帖子,發(fā)現(xiàn)時(shí)間都比較長遠(yuǎn)氛改,并且很多都是1.x版本的集成方案帐萎,對最新的react-navigation 2.x版本來說,相關(guān)帖子感覺比較少胜卤,因此將其記錄下來疆导。如有錯(cuò)誤,請多多指教葛躏。
(ps: 默認(rèn)大家對于redux都很熟悉,不再介紹redux的相關(guān)知識)

相關(guān)插件及版本

    "react": "16.6.0-alpha.8af6728",
    "react-native": "0.57.4",
    "react-navigation": "^2.18.2",
    "react-navigation-redux-helpers": "^2.0.8",
    "react-redux": "^5.1.1",
    "redux": "^4.0.1",
    "redux-logger": "^3.0.6"  

主要文件及目錄

project
│   App.js
│   index.js  
└─── src
       └─── store  
       │      │   index.js
       └─── reducers
       │      │   index.js
       │      └───  Navigator
       │            │ index.js
       └─── components
              │  index .js

分步指南

1. 安裝相關(guān)插件
2. components/index.js文件

根據(jù)react-navigationAPI構(gòu)建的底部導(dǎo)航條澈段,可根據(jù)自身需求自行使用。


const Navigator = createBottomTabNavigator(RouteConfigs, StackNavigatorConfig)

export default Navigator
3. store/index.js文件

這樣處理我相信對熟悉redux的人來說舰攒,應(yīng)該很容易就可以看出來败富,我們可以自定義middleware,利于擴(kuò)展摩窃。

import {createStore, applyMiddleware} from 'redux'
import logger from 'redux-logger'
import reducers from '../Reducers'
import { createReactNavigationReduxMiddleware, } from 'react-navigation-redux-helpers';

const middlewares = []

if (process.env.NODE_ENV === 'development') {
  middlewares.push(logger)
}

const Navmiddleware = createReactNavigationReduxMiddleware(
  "root",
  state => state.nav,
);

middlewares.push(Navmiddleware)

const store = createStore(reducers, applyMiddleware(...middlewares))

export {store}
4.reducers/index.js文件

使用了combineReducers這個(gè)API兽叮,用于將拆分后 reducer 函數(shù)組成的對象,返回一個(gè)新的 Reducer 函數(shù)猾愿。同樣鹦聪,有利于我們繼續(xù)擴(kuò)展程序的Reducers。

import {combineReducers} from 'redux'
import navReducer from './Navigator'

const rootReducers = combineReducers({
  nav:navReducer,
})

export default rootReducers
5.reducers/Navigator/index.js

Navigator的內(nèi)容很簡單蒂秘,根據(jù)官方文檔直接創(chuàng)建一個(gè)NavigationReducer,下方的注釋掉的代碼泽本,就是我在許多帖子內(nèi)看到的創(chuàng)建Reducer的方法,但是測試時(shí)是有紅屏報(bào)錯(cuò)的姻僧。

//import { NavigationActions } from 'react-navigation'
import Navigator from '../../components'
import { createNavigationReducer, } from 'react-navigation-redux-helpers';
// const initialState = Navigator.router.getStateForAction(NavigationActions.init())

export default navReducer = createNavigationReducer(Navigator);
// export default (state = navReducer, actions) => {
//   const nextState = Navigator.router.getStateForAction(actions, state)
//   return nextState || state
// }
結(jié)語:

以上內(nèi)容僅為自己的學(xué)習(xí)過程规丽,歡迎大家取其精華,丟其糟粕段化。若對以上內(nèi)容有不同見解嘁捷,歡迎一起探討。
企鵝號:1041415167 郵箱地址:zth1041415167@outlook.com

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末显熏,一起剝皮案震驚了整個(gè)濱河市雄嚣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖缓升,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鼓鲁,死亡現(xiàn)場離奇詭異,居然都是意外死亡港谊,警方通過查閱死者的電腦和手機(jī)骇吭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歧寺,“玉大人燥狰,你說我怎么就攤上這事⌒笨穑” “怎么了龙致?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長顷链。 經(jīng)常有香客問我目代,道長,這世上最難降的妖魔是什么嗤练? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任榛了,我火速辦了婚禮,結(jié)果婚禮上煞抬,老公的妹妹穿的比我還像新娘霜大。我一直安慰自己,他們只是感情好此疹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布僧诚。 她就那樣靜靜地躺著,像睡著了一般蝗碎。 火紅的嫁衣襯著肌膚如雪湖笨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天蹦骑,我揣著相機(jī)與錄音慈省,去河邊找鬼。 笑死眠菇,一個(gè)胖子當(dāng)著我的面吹牛边败,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捎废,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼笑窜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了登疗?” 一聲冷哼從身側(cè)響起排截,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嫌蚤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后断傲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脱吱,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年认罩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了箱蝠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡垦垂,死狀恐怖宦搬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乔外,我是刑警寧澤床三,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站杨幼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏聂渊。R本人自食惡果不足惜差购,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汉嗽。 院中可真熱鬧欲逃,春花似錦、人聲如沸饼暑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弓叛。三九已至彰居,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撰筷,已是汗流浹背陈惰。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留毕籽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像孕惜,于是被迫代替她去往敵國和親驶睦。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容