react-navigation通過redux中間件來做登錄驗(yàn)證

創(chuàng)建一個(gè)登錄驗(yàn)證中間件

createLoginMiddleware.js
import {NavigationActions} from "react-navigation"

function createLoginMiddleware() {
    return ({dispatch, getState}) => next => action => {
        // 判斷action type是否為NAVIGATE類型 并且是需要驗(yàn)證的頁面
        if (action.type == NavigationActions.NAVIGATE && (action.routeName == 'Trade' || action.routeName == 'LiveTelecast')) {
            const state = getState()
            let appLoginState = state.getIn(['loginState', 'appLoginState']);
            // 判斷登錄狀態(tài)
            if (!appLoginState) {
                // 沒有登錄者跳轉(zhuǎn)到登錄頁面
                dispatch({type: NavigationActions.NAVIGATE, routeName: 'AppLogin'})
                return
            }
        }
        return next(action)
    }
}

export default createLoginMiddleware

添加中間件

configureStore.prod.js
import { createStore, applyMiddleware, compose } from 'redux'
import thunk from 'redux-thunk'
import { Map } from 'immutable'

import { socket } from './io'
import createSocketIoMiddleware from './socketIo'
import createLoginMiddleware from './loginMiddleware'
import getReducers from '../reducers/index'

// socket中間件
const socketMiddleware = createSocketIoMiddleware(socket)
// 登錄驗(yàn)證中間件
const loginMiddleware = createLoginMiddleware()

function configureStore(navReducer, initialState = Map()) {
    let enhancer = compose(
        applyMiddleware(socketMiddleware, loginMiddleware, thunk)
    )
    return createStore(getReducers(navReducer), initialState, enhancer)
}

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

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,500評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,253評(píng)論 6 342
  • React中沒有類似Angular那樣的雙向數(shù)據(jù)綁定,在做一些表單復(fù)雜的后臺(tái)類頁面時(shí),監(jiān)聽、賦值、傳遞、校驗(yàn)時(shí)編碼...
    tedyuen777閱讀 9,971評(píng)論 1 23
  • 今天是夏令營的第四天,也是各個(gè)小戰(zhàn)士們?cè)跔I地的最后一晚,即將結(jié)營回家喜悅的心情都掛在臉上,一個(gè)個(gè)心花怒放,內(nèi)向的不...
    總會(huì)等到那一天閱讀 493評(píng)論 1 1
  • 中午出去吃飯?jiān)诨貋淼穆飞险г垢鞣N飯都不好吃的時(shí)候,看見了小時(shí)候吃的一種零食,學(xué)名叫什么不知道,俗稱“焦米貴”,于...
    小章女子閱讀 612評(píng)論 1 1

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