persist 可接受对象,多个值的话也可以接受数组对象;
下面是个例子:
import { defineStore } from 'pinia'
export const useLoginStore = defineStore(
'login',
() => {
const loginUser = ref<any>({})
const isFirstDownTemplate = ref<boolean>(false)
const setLoginUser = (payload: any) => {
loginUser.value = payload
}
const setIsFirstDownload = (params:boolean) => {
isFirstDownTemplate.value = params
}
function $reset() {
loginUser.value = {}
isFirstDownTemplate.value = false
}
return { loginUser, setLoginUser, $reset, isFirstDownTemplate, setIsFirstDownload }
},
{
persist: [
{
// 第一个持久化处理对象
key: 'loginStates',
paths: ['loginUser'],
},
{
// 第二个持久化处理对象
key: 'firstDownloadState',
paths: ['isFirstDownTemplate'],
},
],
}
)
$reset 方法用于重置 loginUser 和 isFirstDownTemplate 的值,将它们分别设置为初始值。
最后,在 return 语句中,将需要暴露给外部的状态和方法进行返回,以便在组件中使用。这样,其他组件可以通过 useLoginStore 来访问和修改 loginUser、isFirstDownTemplate,以及调用 setLoginUser、setIsFirstDownload、$reset 方法。
在 store 的配置对象中,persist 属性用于持久化 store 的部分状态。在上述代码中,存储在 loginUser 中的状态被指定为需要持久化的部分。可以选择使用 localStorage 或其他合适的存储方式,并通过设置 storage 属性进行配置。