vue3土味情话pinia可以持久保存再次修改App样式

我是不是你最疼爱的人-失去爱的城市

<template><div class="talk"><button @click="getLoveTalk">土味情话</button><ul><li v-for="talk in talkStore.talkList" :key="talk.id">{{ talk.title }}</li></ul> </div>
</template><script setup lang="ts" name="LoveTalk">
import { useTalkStore } from '@/stores/loveTalk'const talkStore = useTalkStore()
// 持久保存talkList
talkStore.$subscribe((mutation, state) => {localStorage.setItem('talkList', JSON.stringify(state.talkList))
})
// 方法
async function getLoveTalk() {talkStore.getATalk()
}
</script>
<style scoped>
.talk {display: flex;flex-direction: column;align-items: center;justify-content: center;box-shadow: 1px 1px 10px  #4caf50;border-radius: 10px;font-size: 15px;}
button {/* margin-right: 10px;margin-left: 10px; */text-align: center;background-color: #4caf50;color: white;padding: 10px;border: none;border-radius: 5px;cursor: pointer;position: absolute;top: 80px;left: 35px;}
</style>

脚本

import { defineStore } from 'pinia'
import axios from 'axios'
import { nanoid } from 'nanoid'
// import { reactive } from 'vue'
export const useTalkStore = defineStore('talk', {actions: {async getATalk() {// 方法名可以随便起,但是要和定义的actions方法名一致const { data: { content: title } } = await axios.get('https://api.uomg.com/api/rand.qinghua?format=json')//  把请求到的内容包装成字符串包装成对象,然后添加到talkList中const obj = { id: nanoid(), title }this.talkList.unshift(obj)}},state() {return {talkList:JSON.parse(localStorage.getItem('talkList') || '[]')}},/* 以下是修改组合式的代码 还 需要修改*/
//   const talkList = reactive(JSON.parse(localStorage.getItem('talkList') as string) || []),
//   async function getATalk(){
//   // 方法名可以随便起,但是要和定义的actions方法名一致
//   let { data: { content: title } } = await axios.get('https://api.uomg.com/api/rand.qinghua?format=json')
//         //  把请求到的内容包装成字符串包装成对象,然后添加到talkList中
//        let obj = { id: nanoid(), title }
//    talkList.unshift(obj)
//       }
// return { talkList, getATalk }})

 App样式:

<template><MyBiaoZhi msg="与妖为邻" class="App-logo" /><div class="parent"><header><nav><ul class="App_ul"><liclass="App_li"v-for="(menuItem, menuIndex) in menuItems":key="menuIndex"@click="toggleSubMenu(menuIndex as number)":class="{ active: activeMenuItem === menuIndex }"><RouterLink replace :to="{ path: '/' }">{{ menuItem.label1 }}</RouterLink><RouterLink replace :to="{ path: '/WangZhan' }">{{ menuItem.label2 }} </RouterLink><RouterLink replace :to="{ path: '/XueXi' }">{{ menuItem.label3 }}</RouterLink><RouterLink replace :to="{ name: 'About' }"> {{ menuItem.label4 }}</RouterLink></li></ul></nav><!-- <BeiJingShiJian /> --></header><div class="left_side"></div><div class="right_side"></div><div class="div4"><RouterView /></div></div>
</template>
<script setup lang="ts" name="App">
// import BeiJingShiJian from './BeiJingShiJian.vue'
import MyBiaoZhi from './MyBiaoZhi.vue'
import { ref } from 'vue'
let menuItems = ref([{ label1: '首页' },{ label2: '网站' },{ label3: '学习' },{ label4: '关于' }
])
let activeMenuItem = ref() // 当前激活的菜单项索引
let activeSubMenu = ref()
function toggleSubMenu(menuIndex: any) {activeMenuItem.value = menuIndex // 设置当前激活的菜单项索引activeSubMenu.value = activeSubMenu.value === menuIndex ? null : menuIndex
}
</script>
<style scoped lang="scss">
.parent {/* https://cssgrid-generator.netlify.app/ *//* 网格布局 */display: grid;/* 列数: 34; */grid-template-columns: repeat(34, 1fr);/* 行数: 19; */grid-template-rows: repeat(19, 1fr);/* 列间距: 5px; */grid-column-gap: 5px;/* 行间距: 5px; */grid-row-gap: 2px;
}header {grid-area: 1 / 1 / 3 / 35;height: 4rem;border: 1px solid rgba(0, 213, 255, 0.4);
}
ul {display: flex;top: 0rem;left: 20rem;text-align: center;position: relative;li {width: 80px;height: 53px;padding: 5px;perspective: 700px;cursor: pointer;margin-left: 1rem;transition: color 0.3s;border-radius: 10px;font-size: 2rem;background-image: linear-gradient(to top left,rgba(0, 0, 0, 0.2),rgba(0, 0, 0, 0.2) 30%,rgba(0, 0, 0, 0));box-shadow:inset 4px 4px 4px rgba(255, 255, 255, 0.6),inset -4px -4px 5px rgba(0, 0, 0, 0.6);border: 0px solid black;// box-shadow:// 0 0 10px 2px rgba(0, 0, 0, 0.2),// 0 0 1px 2px black,// inset 0 2px 2px -2px white,// inset 0 0 2px 8px #4c4343,// inset 0 0 2px 22px #000000;}a {// 去掉下划线text-decoration: none;background-image: radial-gradient(transparent 30%, rgba(101, 0, 0, 0.7) 70%);background-size: 5px 5px;border-radius: 5px;&:hover {color: #ffc97e;}}
}
li.active {box-shadow:inset -2px -2px 3px rgba(255, 255, 255, 0.589),inset 2px 2px 3px rgba(0, 0, 0, 0.6);a {color: #e63c3c;}
}
li.active::before {border-radius: 10px;content: '';position: absolute;top: 0;left: 0;right: 0;height: 50px;width: 80px;animation: flicker 0.2s infinite 0.3s;z-index: -1;background-image: radial-gradient(#ffc97e, #ff1818 40%, transparent 70%);}
.left_side {grid-area: 3 / 1 / 170 / 4;border: 1px solid rgba(0, 213, 255, 0.4);display: flex;align-items: center;justify-content: center;flex-direction: column;text-align: center;font-size: 3rem;
}
.right_side {grid-area: 3 / 32 / 170 / 35;border: 1px solid rgba(0, 213, 255, 0.4);
}
.div4 {grid-area: 3 / 4 / 170 / 32;box-shadow:inset -2px -2px 3px rgba(255, 255, 255, 0.6),inset 2px 2px 3px rgba(0, 0, 0, 0.6);border-radius: 20px;
}
@keyframes flicker {0% {opacity: 1;}80% {opacity: 0.8;}100% {opacity: 1;}
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/11092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用 Supabase CLI 进行本地开发环境搭建

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;Supabase CLI&#xff08;1.1&#xff09;安装 Scoop&#xff08;1.2&#xff09;用 Scoop 安装 Supabase CLI &#xff08;二&#xff09;本地项目环境&#xff08;2.1&#xff09;初始化项目&#xff08;2…

基于gin框架的文件上传(逐行解析)

基于gin框架的文件上传(逐行解析)记录一下使用gin框架完成一个文件上传的功能&#xff0c;一下是实现该功能的代码&#xff0c;适合小白&#xff0c;代码都有逐行解释&#xff01; app.go: package routerimport ("chat/service""github.com/gin-gonic/gin&qu…

网络工程师练习题

网络工程师练习题 网桥怎样知道网络端口连接了那些网站?如果从端口收到一个数据帧,则将其源地址记入该端口的数据库当网桥连接的局域网出现环路时怎么办?运行生成树协议阻塞一部分端口。使用IEEE 802.1q协议,最多可以配置4094个VLAN。VLAN中继协议(VTP)有不同的工作模式,…

C++异常详解

文章目录 前言一、回顾C语言二、异常的概念三、异常的使用1.异常的抛出和捕获2.异常的重新捕获 三.异常安全与异常规范1.异常安全2.异常规范 四.自定义异常体系五.C标准库的异常体系六.异常优缺点练习题总结 前言 在本篇文章中&#xff0c;我们将会详细介绍一下有关C异常的讲解…

微服务架构:注册中心 Eureka、ZooKeeper、Consul、Nacos的选型对比详解

微服务架构&#xff08;Microservices Architecture&#xff09;是一种基于服务拆分的分布式架构模式&#xff0c;旨在将复杂的单体应用程序拆分为一组更小、更独立的服务单元。这些服务单元可以独立开发、测试、部署&#xff0c;并使用不同的技术栈和编程语言。它们通过轻量级…

[华为OD] C卷 dfs 特殊加密算法 100

题目&#xff1a; 有一种特殊的加密算法&#xff0c;明文为一段数字串&#xff0c;经过密码本查找转换&#xff0c;生成另一段密文数字串。 规则如下 1•明文为一段数字串由0-9组成 2.密码本为数字0-9组成的二维数组 3•需要按明文串的数字顺序在密码本里找到同样的数字串…

PUBG非升级实用枪皮-部分盘点

藏匿处的黑货箱武器需要耗费高额成本才能升级 对于像我这样的日常休闲玩家来说是一笔不小的&#xff08;巨大的&#xff01;&#xff09;负担 其实有许多普通非升级枪皮也是不错的选择 今天就来盘点一下我自己日常在用的普通皮 来看看你是不是也在用一样的 &#xff08;仅是盘点…

【OceanBase诊断调优】—— 租户资源统计项及其查询方法

本文主要介绍 OceanBase 数据库中租户资源统计项及其查询方法。 适用版本 OceanBase 数据库 V4.1.x、V4.2.x 版本。 CPU 资源统计项 逻辑 CPU 使用率&#xff08;线程处理请求的时间占比&#xff09;。 通过虚拟表 __all_virtual_sysstat 在 SYS 系统租户下&#xff0c;查看…

09.zabbix自定义模块并使用

zabbix自定义模块并使用 根据tcp的11中状态获取值&#xff0c;进行批量配置监控项 [rootyunlong66 ~]# cat /etc/zabbix/zabbix_agentd.d/tcp.conf UserParameterESTABLISHED,netstat -antp |grep -c ESTABLISHED UserParameterSYN_SENT,netstat -antp |grep -c SYN_SENT Use…

Obsidian/Typora设置图床

在obsidian中默认图片是保存在本地的&#xff0c;但是在要导出文档上传到网上时&#xff0c;由于图片保存在本地&#xff0c;会出现无法加载图片的问题。 这里引用的一段话&#xff1a; 这里使用picgo-core和gitee实现图床功能&#xff0c; 参考1&#xff1a; Ubuntu下PicGO配…

Github学习

1.Git与Github 区别: Git是一个分布式版本控制系统&#xff0c;简单的说就是一个软件&#xff0c;用于记录一个或若干个文件内容变化&#xff0c;以便将来查阅特点版本修订情况的软件。 Github是一个为用户提高Git服务的网站&#xff0c;简单说就是一个可以放代码的地方。Gi…

C语言 | Leetcode C语言题解之第85题最大矩形

题目&#xff1a; 题解&#xff1a; int maximalRectangle(char** matrix, int matrixSize, int* matrixColSize) {int m matrixSize;if (m 0) {return 0;}int n matrixColSize[0];int left[m][n];memset(left, 0, sizeof(left));for (int i 0; i < m; i) {for (int j …

SeetaFace6人脸活体检测C++代码实现Demo

SeetaFace6包含人脸识别的基本能力&#xff1a;人脸检测、关键点定位、人脸识别&#xff0c;同时增加了活体检测、质量评估、年龄性别估计&#xff0c;并且顺应实际应用需求&#xff0c;开放口罩检测以及口罩佩戴场景下的人脸识别模型。 官网地址&#xff1a;https://github.co…

【补充】图神经网络前传——DeepWalk

论文阅读 论文&#xff1a;https://arxiv.org/pdf/1403.6652 参考&#xff1a;【论文逐句精读】DeepWalk&#xff0c;随机游走实现图向量嵌入&#xff0c;自然语言处理与图的首次融合_随机游走图嵌入-CSDN博客 abstract DeepWalk是干什么的&#xff1a;在一个网络中学习顶点…

【Mac】Ghost Buster Pro(苹果电脑内存清理专家) v3.2.5安装教程

软件介绍 Ghost Buster pro是一款针对Mac系统的电脑清理和优化工具&#xff0c;可以帮助用户清理系统垃圾、修复注册表错误、卸载不需要的软件、管理启动项等&#xff0c;从而提高系统性能和稳定性。 安装教程 1.打开镜像包&#xff0c;拖动「Ghost Buster Pro」到应用程序中…

【Linux网络】Https【下】{CA认证/证书的签发与认证/安全性/总结}

文章目录 1.引入证书【为方案五铺垫】1.1再谈https1.2SSL/TLS1.3CA机构1.4理解数字签名1.4继续铺垫1.5方案五服务端申请证书回顾一二三回顾方案四方案五过程寻找方案五的漏洞客⼾端对证书进⾏认证 2.查看证书2.1查看浏览器的受信任证书发布机构2.2中间⼈有没有可能篡改该证书2.…

差分约束 C++ 算法例题

差分约束 差分约束 是一种特殊的 n 元一次不等式组&#xff0c;m 个约束条件&#xff0c;可以组成形如下的格式&#xff1a; { x 1 − x 1 ′ ≤ y 1 x 2 − x 2 ′ ≤ y 2 ⋯ x m − x m ′ ≤ y m \begin{cases} x_1-x_1^{} \le y_1 \\ x_2-x_2^{} \le y_2 \\ \cdots \\ x_…

SpringBoot集成jxls2实现复杂(多表格)excel导出

核心依赖 需求 导出多个表格&#xff0c;包含图片&#xff0c;类似商品标签 1.配置模板 创建一个xlsx的模板文件&#xff0c;配置如下 该模板进行遍历了两次&#xff0c;因为我想要导出的数据分为两列展示&#xff0c;左右布局&#xff0c;一个循环实现不了&#xff0c;所以采…

百面算法工程师 | 正则优化函数——BN、LN、Dropout

本文给大家带来的百面算法工程师是正则优化函数&#xff0c;文章内总结了常见的提问问题&#xff0c;旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中&#xff0c;我们将总结一些BN、LN、Dropout的相关知识&#xff0c;并提供参考的回答及其理论基础&#xff0c;以…

C++ | Leetcode C++题解之第85题最大矩形

题目&#xff1a; 题解&#xff1a; class Solution { public:int maximalRectangle(vector<vector<char>>& matrix) {int m matrix.size();if (m 0) {return 0;}int n matrix[0].size();vector<vector<int>> left(m, vector<int>(n, 0)…