瀏覽代碼

Better dispatch and saga for login logic

afc163 8 年之前
父節點
當前提交
f50867b071
共有 2 個文件被更改,包括 11 次插入22 次删除
  1. 1 7
      src/layouts/BasicLayout.js
  2. 10 15
      src/models/login.js

+ 1 - 7
src/layouts/BasicLayout.js

@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
 import { Layout, Menu, Icon, Avatar, Dropdown, Tag, message, Spin } from 'antd';
 import DocumentTitle from 'react-document-title';
 import { connect } from 'dva';
-import { Link, routerRedux, Route, Redirect, Switch } from 'dva/router';
+import { Link, Route, Redirect, Switch } from 'dva/router';
 import moment from 'moment';
 import groupBy from 'lodash/groupBy';
 import { ContainerQuery } from 'react-container-query';
@@ -80,12 +80,6 @@ class BasicLayout extends React.PureComponent {
     if (key === 'logout') {
       this.props.dispatch({
         type: 'login/logout',
-        payload: {
-          status: false,
-        },
-        callback: () => {
-          this.props.dispatch(routerRedux.push('/user/login'));
-        },
       });
     }
   }

+ 10 - 15
src/models/login.js

@@ -1,3 +1,4 @@
+import { routerRedux } from 'dva/router';
 import { fakeAccountLogin, fakeMobileLogin } from '../services/api';
 
 export default {
@@ -15,7 +16,7 @@ export default {
       });
       const response = yield call(fakeAccountLogin, payload);
       yield put({
-        type: 'loginHandle',
+        type: 'changeLoginStatus',
         payload: response,
       });
       yield put({
@@ -30,7 +31,7 @@ export default {
       });
       const response = yield call(fakeMobileLogin);
       yield put({
-        type: 'loginHandle',
+        type: 'changeLoginStatus',
         payload: response,
       });
       yield put({
@@ -38,19 +39,19 @@ export default {
         payload: false,
       });
     },
-    *logout({ payload, callback }, { put }) {
+    *logout(_, { put }) {
       yield put({
-        type: 'logoutHandle',
-        payload,
+        type: 'changeLoginStatus',
+        payload: {
+          status: false,
+        },
       });
-      if (callback) {
-        callback();
-      }
+      yield put(routerRedux.push('/user/login'));
     },
   },
 
   reducers: {
-    loginHandle(state, { payload }) {
+    changeLoginStatus(state, { payload }) {
       return {
         ...state,
         status: payload.status,
@@ -63,11 +64,5 @@ export default {
         submitting: payload,
       };
     },
-    logoutHandle(state, { payload }) {
-      return {
-        ...state,
-        status: payload.status,
-      };
-    },
   },
 };