当前位置:   article > 正文

使用vue3+ts+vite从零开始搭建bolg(四):登录_vite+vue3+ts登录界面

vite+vue3+ts登录界面

四、登录

4.1登录页面的静态搭建

在views的login下搭建好静态页面即可

在根目录下的index.html可以修改图标和网页名

注意:这里要删除style.css文件。并去除main的引用

4.2仓库搭建

在src下建立如图文件夹

在store中的index中定义pinia

  1. import { createPinia } from 'pinia'
  2. let pinia = createPinia()
  3. export default pinia

 在main.ts里注册

  1. //pinia
  2. import pinia from '@/store'
  3. app.use(pinia)

在modules的user中创建user仓库

  1. import { defineStore } from 'pinia'
  2. let useUserStore = defineStore('User', {
  3. state: ()=> {
  4. return {
  5. }
  6. },
  7. actions: {
  8. }
  9. })
  10. export default useUserStore

4.3登录token存储

在actions里编写异步登录,并存储token

  1. import { loginForm, loginResponseData } from '@/api/user/type'
  2. import { login} from '@/api/user/index'
  3. let useUserStore = defineStore('User', {
  4. state: () => {
  5. return {
  6. token: '',
  7. }
  8. },
  9. actions: {
  10. async userLogin(data: loginForm) {
  11. let result: loginResponseData = await login(data)
  12. if (result.code == 200) {
  13. this.token = result.data
  14. return 'ok'
  15. } else {
  16. return Promise.reject(new Error(result.message))
  17. }
  18. },
  19. },
  20. })

在utils下创建token.ts文件

  1. //本地存储
  2. export const SET_TOKEN = (token: string) => {
  3. localStorage.setItem('TOKEN', token)
  4. }
  5. //取出本地数据
  6. export const GET_TOKEN = () => {
  7. return localStorage.getItem('TOKEN')
  8. }
  9. //删除本地数据
  10. export const REMOVE_TOKEN = () => {
  11. localStorage.removeItem('TOKEN')
  12. }

在user仓库里调用

  1. import { SET_TOKEN, GET_TOKEN, REMOVE_TOKEN } from '@/utils/token'
  2. let useUserStore = defineStore('User', {
  3. state: () => {
  4. return {
  5. token: GET_TOKEN(),
  6. }
  7. },
  8. actions: {
  9. async userLogin(loginForm: loginForm) {
  10. let result: loginResponseData = await login(loginForm)
  11. if (result.code == 200) {
  12. this.token = result.data
  13. // 本地存储持久化存储一份
  14. SET_TOKEN(result.data as string)
  15. return 'ok'
  16. } else {
  17. return Promise.reject(new Error(result.message))
  18. }
  19. },
  20. },
  21. })
  22. export default useUserStore

4.4页面登录跳转

在views的login中,先调用仓库

  1. import useUserStore from '@/store/modules/user.ts'
  2. import { ElNotification } from 'element-plus'
  3. let useStore = useUserStore()
  4. const loginBtn = async() => {
  5. try {
  6. await useStore.userLogin(loginForm)
  7. } catch (error) {
  8. ElNotification({
  9. type: 'error',
  10. message: (error as Error).message,
  11. })
  12. }
  13. }

如果登录信息无误,再实现页面跳转

  1. import { useRouter } from 'vue-router'
  2. let $router = useRouter()
  3. try {
  4. await useStore.userLogin(loginForm)
  5. $router.push({ path: '/' })
  6. } catch (error) {
  7. ElNotification({
  8. type: 'error',
  9. message: (error as Error).message,
  10. })
  11. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/797211
推荐阅读
相关标签
  

闽ICP备14008679号