uniapp vue3 uses pinia to store and obtain data

existing token 

import { defineStore } from 'pinia';

export const userInfo = defineStore('userInfo', {
  state: () => {
    return {
      userToken: uni.getStorageSync('token') || '',
    };
  },
  actions: {
    // 添加token
    updateToken(token: string) {
      uni.setStorageSync('token', token);
      this.userToken = token
    }
  }
});

use

 import {
    userInfo
  } from '@/stores/userInfo'
  import {
    ref
  } from "vue";
  const test = userInfo()
  const tst = ref('4')
  test.updateToken(tst.value)

Effect

Store user information here

Define store file

import { defineStore } from 'pinia'

interface Member {
    userInfo : AnyObject | null
}

const useMemberStore = defineStore('member', {
    state: () : Member => {
        return {
            userInfo: uni.getStorageSync('userInfo') || null
        }
    },
    actions: {
        updateUserInfo(userInfo : AnyObject) {
            uni.setStorageSync('userInfo', userInfo)
            this.userInfo = userInfo
        }
    }
})

export default useMemberStore

 Vue page stores data

import useMemberStore from '@/stores/member'

 const user = useMemberStore()

 user.updateUserInfo('存对象的数据')   

Get data

method one

The disadvantage is that there is no initial value and the console prompts an error.

Use userInfo.member_id in template 

 import { storeToRefs } from 'pinia'
    
 import useMemberStore from '@/stores/member'    

 const info = useMemberStore()
 
 const { userInfo } = storeToRefs(info)
 
 console.log(userInfo.value.member_id, '从缓存中取数据');

Print userInfo 

Method 2 

If the default value is given, even if userInfo has no value, no error will be reported.

template中 直接 {
   
   {member_id}} 使用

 import useMemberStore from '@/stores/member'
 import { ref, computed } from "vue";

 const memberStore = useMemberStore()
    const userInfo : any = computed(() => memberStore.userInfo)
    const member_id = ref(0)
    const is_mechanic = ref(0)
    if (userInfo.value) {
        member_id.value = userInfo.value.member_id
        is_mechanic.value = userInfo.value.is_mechanic
    }

おすすめ

転載: blog.csdn.net/LJM51200/article/details/133877033