From b328419b96c0bfb224bc65688d1a7665557e3fa2 Mon Sep 17 00:00:00 2001 From: xuan Date: Tue, 13 Sep 2022 15:37:37 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=88=20perf(=E7=99=BB=E5=BD=95=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2):=20=E5=AE=8C=E5=96=84=E7=99=BB=E9=99=86=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.tsx | 10 +- src/pages/login/index.tsx | 1 + src/pages/user/index.tsx | 2 +- src/use/useHttp.ts | 9 +- src/use/useLoginRequest.ts | 203 ++++++++++++++++++------------------- 5 files changed, 117 insertions(+), 108 deletions(-) diff --git a/src/app.tsx b/src/app.tsx index 9636423..039f54b 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -6,8 +6,14 @@ import './app.scss' import Taro, { onAppShow, useDidShow } from '@tarojs/taro' import { shareShop } from './common/util' +type ParamsType = { + children?: React.ReactNode +} + const store = configStore() -const App: FC = (params) => { +const App: FC = (params) => { + const { children } = params + Taro.showShareMenu({ withShareTicket: true, }) @@ -41,7 +47,7 @@ const App: FC = (params) => { return ( - {params.children} + {children} ) } diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx index efb0c12..12079c6 100644 --- a/src/pages/login/index.tsx +++ b/src/pages/login/index.tsx @@ -76,6 +76,7 @@ const Login: FC = () => { } } + return ( diff --git a/src/pages/user/index.tsx b/src/pages/user/index.tsx index 1564ce4..92cbdd2 100644 --- a/src/pages/user/index.tsx +++ b/src/pages/user/index.tsx @@ -140,7 +140,7 @@ const UserInfo: FC = () => { - IT部门 + {userInfo.userInfo.department_name} IT-开发总监 diff --git a/src/use/useHttp.ts b/src/use/useHttp.ts index 5ff8104..c21dc07 100644 --- a/src/use/useHttp.ts +++ b/src/use/useHttp.ts @@ -181,7 +181,14 @@ export const useRequest = ( removeToken() // removeSessionKey() removeUserInfo() - login() + // 跳转回登录页面 + login().catch((err)=>{ + if (err){ + Taro.reLaunch({ + url: '/pages/login/index', + }) + } + }) } else { Taro.showToast({ title: `错误:${showStatus(statusCode)}`, diff --git a/src/use/useLoginRequest.ts b/src/use/useLoginRequest.ts index 9bf6122..f6da249 100644 --- a/src/use/useLoginRequest.ts +++ b/src/use/useLoginRequest.ts @@ -1,113 +1,108 @@ -import {BASE_URL, WX_APPID } from "@/common/constant" -import Taro, { useRouter } from "@tarojs/taro" -import { useRef, useState } from "react" -import qs from 'qs' -import useUserInfo from "./useUserInfo" -import useLogin from "./useLogin" +import { BASE_URL, WX_APPID } from '@/common/constant' +import Taro, { useRouter } from '@tarojs/taro' +import { useRef, useState } from 'react' +import qs from 'qs' +import useUserInfo from './useUserInfo' +import useLogin from './useLogin' //开这个hook 主要是为了让useHttp 能够调用 -type Param = {success: true|false, data: any, msg: string, code: null|number, loading: false|true} +type Param = { success: boolean; data: any; msg: string; code: null | number; loading: boolean } let loginStatus = false //登录状态,true登录中 export default () => { - - let initData = { - success: false, - data: null, - msg: '', - code: null, - loading: false - } - let loginData = useRef(initData) - const {setToken, setSessionKey} = useUserInfo() - const router = useRouter() - //微信登录请求v2 - const fetchDataLogin = async (login_code) => { - const q = { - url: BASE_URL + '/v1/mall/login', - header: { - "Platform": 3, - "Appid": WX_APPID, - }, - method: 'post', - data:{js_code: login_code} - } - try{ - const result = await Taro.request(q as any) - const {code, data, msg} = result.data - if(result.statusCode === 200) { - loginData.current.success = (code === 0 ? true : false) - loginData.current.code = code - loginData.current.msg = msg - loginData.current.data = data - } else { - Taro.showToast({ - title: `错误:登录失败`, - icon: 'none' - }) - console.log('登录错误:', result.errMsg) - - } - }catch(e) { - Taro.showToast({ - title: `错误:登录失败`, - icon: 'none' + let initData = { + success: false, + data: null, + msg: '', + code: null, + loading: false, + } + let loginData = useRef(initData) + const { setToken, setSessionKey } = useUserInfo() + const router = useRouter() + //微信登录请求v2 + const fetchDataLogin = async (login_code) => { + const q = { + url: BASE_URL + '/v1/mall/login', + header: { + Platform: 3, + Appid: WX_APPID, + }, + method: 'post', + data: { js_code: login_code }, + } + try { + const result = await Taro.request(q as any) + const { code, data, msg } = result.data + if (result.statusCode === 200) { + loginData.current.success = code === 0 ? true : false + loginData.current.code = code + loginData.current.msg = msg + loginData.current.data = data + } else { + Taro.showToast({ + title: `错误:登录失败`, + icon: 'none', + }) + console.log('登录错误:', result.errMsg) + } + } catch (e) { + Taro.showToast({ + title: `错误:登录失败`, + icon: 'none', + }) + console.log('登录错误:', e.errMsg) + } + return loginData.current + } + + //微信登录 + const login = () => { + return new Promise((resolve, reject) => { + if (loginStatus) return reject(false) + loginStatus = true + Taro.login({ + success: async (res) => { + if (res.code) { + const { data, success, msg } = await fetchDataLogin(res.code) + if (success) { + setToken(data.token) + setSessionKey(data.session_key) + resolve(data) + let params = router.params + delete params.$taroTimestamp + if (router.path === '/pages/index/index' || router.path === '/pages/user/index') { + Taro.reLaunch({ + url: router.path + '?' + qs.stringify(params), }) - console.log('登录错误:', e.errMsg) - } - return loginData.current - } - - //微信登录 - const login = () => { - if(loginStatus) return false - loginStatus = true - return new Promise((reslove, reject) => { - Taro.login({ - success: async (res) => { - if (res.code) { - const {data, success, msg} = await fetchDataLogin(res.code) - if(success) { - setToken(data.token) - setSessionKey(data.session_key) - reslove(data) - let params = router.params - delete params.$taroTimestamp - if(router.path === '/pages/index/index' || router.path === '/pages/user/index') { - Taro.reLaunch({ - url: router.path +'?' + qs.stringify(params) - }) - } else { - Taro.redirectTo({ - url: router.path +'?' + qs.stringify(params) - }) - } - } else { - Taro.showToast({ - title:'登录失败', - icon:"none" - }) - reject(msg) - } - } else { - console.log('登录失败!' + res.errMsg) - reject(res.errMsg) - } - loginStatus = false - }, - fail: function(e) { - console.log('登录失败!::',e) - reject(e) - loginStatus = false - } + } else { + Taro.redirectTo({ + url: router.path + '?' + qs.stringify(params), }) - }) - - } - - return { - login - } + } + } else { + Taro.showToast({ + title: '登录失败', + icon: 'none', + }) + reject(msg) + } + } else { + console.log('登录失败!' + res.errMsg) + reject(res.errMsg) + } + loginStatus = false + }, + fail: function (e) { + console.log('登录失败!::', e) + reject(e) + loginStatus = false + }, + }) + }) + } + return { + login, + } } -