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
}