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.pswp.cn/web/11092.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11092.shtml
英文地址,請注明出處:http://en.pswp.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;查看…

AtCoder Beginner Contest 308 A題 New Scheme

A題&#xff1a;New Scheme 標簽&#xff1a;模擬 題意&#xff1a;給定 8 8 8個數的序列&#xff0c;詢問這些數是否滿足以下條件&#xff1a; 在 100 100 100到 675 675 675之間且能被 25 25 25整除序列是單調非遞減的 題解&#xff1a;按題意模擬判斷就好了。 代碼&#…

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」到應用程序中…

GIT SSL certificate problem

簡單來說&#xff0c;SSL 協議可以為你的 Web 瀏覽器或其他進程提供一種安全的通道&#xff0c;使服務器和客戶端之間的數據傳輸過程不被第三方竊取或篡改。這非常重要&#xff0c;特別是在處理敏感數據&#xff0c;比如信用卡信息、用戶名和密碼等情況下。 現在&#xff0c;S…

Flutter 中的 Row 小部件:全面指南

Flutter 中的 Row 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;Row 是一個水平布局的小部件&#xff0c;用于將子控件沿著水平軸排列。Row 類似于 HTML 中的 div 標簽&#xff0c;但僅限于水平布局。它非常適合用來創建行式布局&#xff0c;如表單輸入、按鈕組、標簽…

【linux軟件基礎知識】完全公平調度

完全公平調度&#xff08;CFS&#xff09; CFS根據每個進程相對于所有可運行線程總權重的權重為每個進程分配一個“時間片”。 CFS 的目標是近似“無限小”的調度持續時間&#xff0c;稱為目標延遲。 較小的目標延遲可以提高交互性并接近完美的多任務處理&#xff0c;但其代價…

【Linux網絡】Https【下】{CA認證/證書的簽發與認證/安全性/總結}

文章目錄 1.引入證書【為方案五鋪墊】1.1再談https1.2SSL/TLS1.3CA機構1.4理解數字簽名1.4繼續鋪墊1.5方案五服務端申請證書回顧一二三回顧方案四方案五過程尋找方案五的漏洞客?端對證書進?認證 2.查看證書2.1查看瀏覽器的受信任證書發布機構2.2中間?有沒有可能篡改該證書2.…