React+DvaJS 之 hook 路由權限控制

 

React+DvaJS 之 hook 路由權限控制

在model的subscriptions中進行匹配,分發到effects中進行判斷和跳轉,更多資料參考這裏javascript

effects 有三個參數:php

Effects

puthtml

用於觸發 action 。前端

yield put({ type: 'todos/add', payload: 'Learn Dva' });vue

calljava

用於調用異步邏輯,支持 promise 。node

const result = yield call(fetch, '/todos');python

selectreact

用於從 state 裏獲取數據。linux

const todos = yield select(state => state.todos);

基於 action 進行頁面跳轉

import { routerRedux } from 'dva/router'; // Inside Effects yield put(routerRedux.push('/logout')); // Outside Effects dispatch(routerRedux.push('/logout')); // With query routerRedux.push({ pathname: '/logout', query: { page: 2, }, });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

除 push(location) 外還有更多方法,詳見這裏


示例以下:

state: {
    isLogin: false, loginfail:false, }, subscriptions: { setup({ dispatch, history }) { history.listen(location => { if (location.pathname.includes('app')) { dispatch({ type: 'loginhook', }); } }); }, }, effects: { * login({ payload },{call, put}) { const { data } = yield call(login, payload); if (data && data.success) { yield put({ type: 'checklogin', payload:{ isLogin:true, } }); yield put(routerRedux.push('/app/users')); }else{ yield put({ type: 'loginfail', payload:{ loginfail:true, } }); } }, * loginhook({ payload },{select,call, put}){ const isLogin = yield select(({session}) => session.isLogin); console.log('logincheck',isLogin); if(isLogin === false){ yield put((routerRedux.push('/login'))); } }, }, reducers: { checklogin(state,action) { return {...state,isLogin:action.payload.isLogin }; }, loginfail(state,action) { return {...state, loginfail:action.payload.loginfail}; }, }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 https://blog.csdn.net/ohmyauthentic/article/details/53543441
我的分類: react
上一篇4.Draftjs 學習筆記-Decorators
 
下一篇React+DvaJs 之 Context與Props

不會這些技術,大數據開發薪資不會高?

大數據技術與運用的成熟,應用集中於互聯網、金融、醫療、新能源、通訊和房地產等行業。整理平均薪資狀況和大數據學習大綱供查看

想對做者說點什麼?  我來講一句
  • LeoDu2018
    LeoDu2018 2018-05-03 15:23:31#2樓
    您好樓主,我如今使用DVA遇到,判斷是否登陸未登陸跳到登陸頁面的問題,能夠把你上面的登陸判斷的代碼分享給我一下嗎?
     
  • yongf2014
    yongf2014 2018-03-18 23:09:05#1樓
    感謝博主~終於找到了。
     

dva路由監聽

Her_smile

 344

在dva中咱們能夠在Modal中實現事件監聽,經過在modal中添加一個 subscriptions,而且在裏面建立一個setup函數{ namespace: 'infoArea', ...

React-Router傳參取值頁面跳轉

sinat_17775997

 2萬

項目結構 image.png -RouterMap頁面,全部的頁面都必須註冊路由 import React from 'react' import { Router...

初探 React Router 4.0

sinat_17775997

 5.8萬

React Router 4.0 (如下簡稱 RR4) 已經正式發佈,它遵循React的設計理念,即萬物皆組件。因此 RR4 只是一堆 提供了導航功能的組件(還有若干對象和方法),具備聲明式(引入即用...

react登陸跳轉2種方式

tools2016

 452

第一種方式,在頁面中跳轉:切記引入 import { routerRedux } from 'dva/router';// 登陸 handleSubmit = (err, values) =&...

antd mobile(六)react-router 左進右出切換界面

weiyongliang_813

 1442

第五節咱們配置了頁面路由切換,但發現個問題,全部界面都是向左切換的,感受仍是不對啊,仔細分析下原生app,會發現應該是進入是左切換,返回時應該是右切換出。第一步:修改路由動畫配置信息: 修改前的代...

Redux-Router

u010377383

 1006

1. 基本用法React Router 安裝命令以下$ npm install -S react-router 使用時,路由器Router就是React的一個組件。import { Router ...

看看!讓女人牀上尖叫求饒 好方法!快雲 · 頂新

DVA知識集合

m_review

 9944

react與dva 原文地址:https://github.com/dvajs/dva-knowledgemap 1.變量聲明const DELAY = 1000let count = 0 cou...

react前端框架dva(三)

zhangrui_web

 2925

API輸出文件dva默認輸出文件。dva/router默認輸出 react-router 接口, react-router-redux 的接口經過屬性 routerRedux 輸出。好比:import...

dva源碼解析(一)

zp1996323

 3932

寫在前面dva是螞蟻金服推出的一個單頁應用框架,對redux,react-router,redux-saga進行了上層封裝,沒有引入新的概念,可是極大的程度上提高了開發效率;下面內容爲本人理解,若有錯...

深刻redux技術棧

sinat_17775997

 342

http://www.tuicool.com/articles/Afaeiue這一篇是接上一篇「react進階漫談」的第二篇,這一篇主要分析redux的思想和應用,一樣參考了網絡上的大量資料,但代碼同...

react-router-redux 5.0 helloworld

ISaiSai

 1833

最新版本 react-router-redux 5.0 路由DEMO使用了 redux-react,react-saga,react-router,react-router-redux 實現了路...

React Router的一個完整示例

sinat_17775997

 642

本博文提供一個單網頁結構網頁(SPA)使用React Router路由控制跳轉的完整例子。http://blog.csdn.net/future_todo/article/details/530366...

React Router中pushState的使用方法

u010977147

 1883

帶參數頁面跳轉 [javascript] view plain copy   this.props.history.pushState({pass...

學習react,redux,router,antd的一些感悟(看法)

baidu_16051437

 6347

學習react的一些感悟ps:本文列出的教程都是中文版 若是你英語不錯 建議看英文原版教程!!學習react有段時間了 總結了一下經驗學習前 你必須先掌握的知識開發環境建議linux或者mac osx...

react-navigation及dva使用(三)

bestlbw

 3061

關於react-navigation,因爲是社區維護的路由庫,因此更新和問題會比較多,版本更新也比較快,我用的2個版本比較多,一個是beta7版本,如今master是beta11(截止到7月4日爲止)...

ReactJS & dva 項目常見報錯問題與解決方法 (react-router 4)

Wu_shuxuan

 2700

1. 項目中用 dva-cli 生成路由: 命令行:$ dva g route users 報錯信息: AssertionError [ERR_ASSERTION]: ...

react dva 碎片02

chenyongtu110

 818

dva 是基於現有應用架構 (redux + react-router + redux-saga 等)的一層輕量封裝,沒有引入任何新概念,所有代碼不到 100 行。( Inspired by elm ...

基於React,dva腳手架的知乎日報

nianhua120

 1.3萬

MyZhihuApp1,初始化npm install dva npm install dva-cli -g mkdir MyZhiHuAppDva dva -init npm start瀏覽器打開lo...

如何用 Vue 實現前端權限控制(路由權限 + 視圖權限 + 請求權限)

valada

 460

隨着先後端分離架構的流行,權限控制這個曾經陌生的話題開始進入不少前端同窗的視野,做爲一名前端,可能部分同窗會認爲權限是後端的事,其實這個想法是片面的,後端是權限控制的最後一扇門,而在這以前,作好前端權...

CodeIgniter經過hook的方式實現簡單的權限控制

Iamduoluo

 864

根據本身的實際狀況,須要兩個文件,一個是權限控制類,Acl,另一個是權限配置的文件acl.php放在了config這個目錄下。 Acl這個類放在了application/hook/acl.ph...

我的資料

原創
30
粉絲
12
喜歡
9
評論
10
等級:
 
訪問:
 
5萬+
積分:
 
707
排名:
 
7萬+
勳章:

最新評論

 
相關文章
相關標籤/搜索