Vue: localStorage封装
App.vue
<template>
<div id="heart" @click="toggleFlag">
<span :class="{active:flag}"></span>
<span :class="{active:flag}"></span>
</div>
</template>
<script lang="ts" setup>
import { onMounted, ref } from 'vue'
import { getItem, setItem } from '@/utils/localStorage'
const flag = ref<boolean>(true)
const toggleFlag = () => {
flag.value = ! flag.value
setItem('flag', flag.value)
}
onMounted(() => {
flag.value = getItem('flag', true)
})
</script>
<style lang="less">
.active {
background-color: red !important;
}
#heart > span {
background-color: palegreen;
}
#heart {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100px;
height: 150px;
/* background-color: palegreen; */
animation: heart 1s linear 0s infinite;
}
#heart > span:nth-child(1) {
position: absolute;
width: 100px;
height: 150px;
border-radius: 50px 50px 0 0;
transform: rotate(-45deg);
transform-origin: 0 100%;
margin-left: 50px;
}
#heart > span:last-child {
position: absolute;
width: 100px;
height: 150px;
border-radius: 50px 50px 0 0;
transform: rotate(45deg);
transform-origin: 100% 100%;
margin-left: -50px;
}
@keyframes heart {
0% {
transform: scale(1);
}
50% {
transform: scale(0.8);
}
100% {
transform: scale(1);
}
}
</style>
localStorage.ts
const namespace: string = 'zax'
export function setItem(key: string, value: any) {
console.log(key, value)
let storage = window.localStorage.getItem(namespace)
if (! storage) {
storage = {}
} else {
storage = JSON.parse(storage) || {}
}
storage[key] = value
window.localStorage.setItem(namespace, JSON.stringify(storage))
}
export function getItem(key: string, defaultValue: any) {
let storage = window.localStorage.getItem(namespace)
if (! storage) {
storage = {key: defaultValue}
window.localStorage.setItem(namespace, JSON.stringify(storage))
return defaultValue
}
storage = JSON.parse(storage)
return storage[key]
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-03-28 类实现轮播图