Przeglądaj źródła

fix: 登录页-提交按钮防重复点击

lanjianrong 4 lat temu
rodzic
commit
8cff120063
3 zmienionych plików z 761 dodań i 565 usunięć
  1. 1 1
      package.json
  2. 750 555
      pnpm-lock.yaml
  3. 10 9
      src/pages/User/Login/index.jsx

+ 1 - 1
package.json

@@ -50,7 +50,7 @@
   "dependencies": {
     "@ant-design/charts": "1.3.2",
     "@ant-design/icons": "^4.0.0",
-    "@ant-design/pro-form": "1.42.1",
+    "@ant-design/pro-form": "1.66.0",
     "@ant-design/pro-layout": "6.19.3",
     "@ant-design/pro-table": "2.60.0",
     "@icon-park/react": "^1.3.3",

Plik diff jest za duży
+ 750 - 555
pnpm-lock.yaml


+ 10 - 9
src/pages/User/Login/index.jsx

@@ -10,6 +10,7 @@ import { setAuthCache } from '@/utils/auth'
 import { TOKEN_KEY } from '@/utils/cache/cacheEnum'
 import { DEFAULT_CACHE_TIME } from '@/settings/encryptionSetting'
 import consts from '@/consts'
+import { isUnDef } from '@/utils/is'
 
 const LoginMessage = ({ content }) => (
   <Alert
@@ -23,7 +24,6 @@ const LoginMessage = ({ content }) => (
 )
 
 const Login = () => {
-  const [submitting, setSubmitting] = useState(false)
   const [userLoginState, setUserLoginState] = useState({
     submitting: false,
     status: '',
@@ -59,23 +59,24 @@ const Login = () => {
 
   const handleSubmit = async values => {
     setUserLoginState({ ...userLoginState, submitting: true })
-    const { code = -1, data: { token = '' } = {} } = await apiLogin({ ...values })
-    if (code === consts.RET_CODE.SUCCESS) {
+    const { code, data: { token = '' } = {} } = await apiLogin({ ...values })
+    if (isUnDef(code)) {
+      // 不设置
+      setUserLoginState({ ...userLoginState, submitting: false })
+    } else if (code === consts.RET_CODE.SUCCESS) {
       setAuthCache(TOKEN_KEY, token, DEFAULT_CACHE_TIME)
       const userinfo = await fetchUserInfo()
       /** 此方法会跳转到 redirect 参数所在的位置 */
       return goto(userinfo?.currentUser?.username)
+    } else {
+      // 如果失败去设置用户错误信息
+      setUserLoginState({ ...userLoginState, status: 'error', submitting: false })
     }
-    // 如果失败去设置用户错误信息
-    setUserLoginState({ ...userLoginState, status: 'error', submitting: false })
   }
-  const { status, type: loginType } = userLoginState
+  const { submitting, status, type: loginType } = userLoginState
 
   return (
     <div className={styles.container}>
-      <div className={styles.lang} data-lang>
-        {SelectLang && <SelectLang />}
-      </div>
       <div className={styles.content}>
         <div className={styles.top}>
           <div className={styles.header}>