taro+pinia+小程序存储配置持久化
主要通过taro的getStorageSync,setStorageSync
实现配置持久化
// https://pinia.esm.dev/introduction.html
import { defineStore } from 'pinia';
import { CreditCardDateUtils } from '@/untils/compute';
import { getStorageSync, setStorageSync } from "@tarojs/taro";interface dataType {id: string,name: string,statementDay: number,//出账日dueDay: number,//还款日dueDate?: string,//还款日freeDay?: number,//免息天数currentFreeDay: number,//剩余免息天数isCurrentCycle: boolean,//是否本周期
}export const useCardStore = defineStore('card', {state: () => {return {_cardData: <dataType[]>[],};},getters: {getCardInfo: state => {return (id: string) => state._cardData.find((item) => (item.id === id));},getCardDataList: state => {return () => state._cardData;},getIndexCardDataList: state => {const dataList = state._cardData.map((item) => {const creditCardUtils = new CreditCardDateUtils(Number(item.statementDay), Number(item.dueDay));item.freeDay = creditCardUtils.calculateMonthlyGracePeriod();item.currentFreeDay = creditCardUtils.calculateGracePeriodDays();const { dueDate, isCurrentCycle } = creditCardUtils.getCreditCardDueDate();item.dueDate = dueDate.toLocaleDateString();item.isCurrentCycle = isCurrentCycle;return item;}).sort((a, b) => {// 1. 当前周期的卡片优先if (a.isCurrentCycle && !b.isCurrentCycle) return -1;if (!a.isCurrentCycle && b.isCurrentCycle) return 1;// 2. 同一周期内按剩余免息天数降序排列return b.currentFreeDay - a.currentFreeDay;});console.log(dataList, 'dataList')return () => dataList;}},actions: {delCardData(id: string) {this._cardData = this._cardData.filter((item) => item.id !== id);console.log(id);console.log(this._cardData);},setCardData(cardData: dataType) {const index = this._cardData.findIndex((item: dataType) => item.id == cardData.id);console.log(this._cardData, 'this._cardData');console.log(cardData, 'cardData');console.log(index, 'index');if (index <= -1) {this._cardData.push(cardData);} else {this._cardData[index] = cardData;}},},// persist: true,// 配置持久化persist: {// 调整为兼容多端的APIstorage: {setItem(key, value) {setStorageSync(key, value) // [!code warning]},getItem(key) {return getStorageSync(key) // [!code warning]}},}
})