React+DvaJS 之 hook 路由权限控制
来源:互联网 发布:冒险岛市场实时数据 编辑:程序博客网 时间:2024/05/16 08:21
在model的subscriptions中进行匹配,分发到effects中进行判断和跳转,更多资料参考这里
effects 有三个参数:
Effects
put
用于触发 action 。
yield put({ type: 'todos/add', payload: 'Learn Dva' });
call
用于调用异步逻辑,支持 promise 。
const result = yield call(fetch, '/todos');
select
用于从 state 里获取数据。
const todos = yield select(state => state.todos);
基于 action 进行页面跳转
import { routerRedux } from 'dva/router';// Inside Effectsyield put(routerRedux.push('/logout'));// Outside Effectsdispatch(routerRedux.push('/logout'));// With queryrouterRedux.push({ pathname: '/logout', query: { page: 2, },});
除 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}; }, }
0 0
- React+DvaJS 之 hook 路由权限控制
- React+DvaJs 之 Context与Props
- dvaJs + react 快速构建项目
- 20、react之 路由
- react-router JS 控制路由跳转
- react-router 路由控制页面跳转
- react踩坑之路由
- react项目实战(权限模块开发一) 配置路由
- React + Redux 最佳实践 学习之 路由
- react-navigation路由篇之StackRouter
- React路由
- React路由
- react路由
- React路由
- React-native IT喵喵~路由之React Navigation
- react入门之路由----react-router的跳转问题
- 控制react的路由Link为激活时的状态
- react-router v4 使用 history 控制路由跳转
- 2012蓝桥杯预赛试题本科c++转方阵
- java事件处理实验
- AndroidUI入门
- [unity3d][NGUI][本地化]NGUI本地化小工具-在已有的Prefab工程上一键做本地化工具
- 英语salon—反馈
- React+DvaJS 之 hook 路由权限控制
- 在路上
- 字符串的一个功能设计
- USB的SIE串行接口引擎
- USACO 3.2 Magic Squares 魔板 (BFS-HASH)
- 安装Windows和Ubuntu双系统
- javassist入门
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
- BZOJ2693——jzptab