vue3 组合式pinia的使用 案例

3 篇文章 0 订阅

需求:用户登录时,结合session实现永久化存贮个人信息

import { computed, ref } from 'vue'
import { defineStore } from 'pinia'
import { logOn } from '@/service'

// sessionStorage的封装
import { SET_USER_TOKEN, STORAGE_GET, STORAGE_SET } from '@/utils/sessionStorage'
import { ILogOn } from '@/service/interface'
import router from '@/router'

export default defineStore('customer', () => {
    const businessIf: any = ref({})
    // 用户登录的信息
    const businessInfo = computed(() => {
        const result = Object.keys(businessIf.value).length ? JSON.stringify(businessIf.value) : STORAGE_GET('customer-info')
        if (result) return JSON.parse(result)
        return {}
    })

    const login = async (userForm: ILogOn) => {
        // Login
        const customerLoginRes = await logOn(userForm)
        businessIf.value = customerLoginRes.payload.customer
        // 存用户信息
        STORAGE_SET('customer-info', JSON.stringify(customerLoginRes.payload.customer))
        // 存token
        SET_USER_TOKEN(customerLoginRes.payload.accessToken)
        // 取新的token
        STORAGE_SET('refresh_token', customerLoginRes.payload.refreshToken)

        router.push('/')
    }
    const updateBusinessInfoValue = (newValue: any) => {
        businessIf.value = newValue;
    }
    return { businessInfo, login, businessIf, updateBusinessInfoValue }
})

组件中使用pinia

组件中修改pinia的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值