042、Vue3+TypeScript基础,pinia库存储数据修改的两种方式

news/2024/11/15 15:23:20/文章来源:https://www.cnblogs.com/tianpan2019/p/18372755

01、main.ts代码如下:

// 引入createApp用于创建Vue实例
import {createApp} from 'vue'
// 引入App.vue根组件
import App from './App.vue'//第一步:引入pinia
import {createPinia} from 'pinia'const app = createApp(App);//第二步:创建pinia实例
const pinia = createPinia()
//第三步:将pinia实例挂载到Vue实例上
app.use(pinia)// App.vue的根元素id为app
app.mount('#app')

02、count.ts代码如下:

import {defineStore} from 'pinia'export const useCountStore =defineStore('count', {//真正储存数据的地方
        state() {return {sum: 6,name: '张三',age: 18,talklist: [{id: 'a001', title: '1今天你想我了没'},{id: 'a002', title: '2今天你想我了没'},{id: 'a003', title: '3今天你想我了没'},]}}})

03、App.vue代码如下:

<template><div class="app"><h2 class="title">App.Vue</h2><Page1/><br><Page2/></div>
</template><script lang="ts" setup name="App">
import Page1 from "@/view/Page1.vue";
import Page2 from "@/view/Page2.vue";
</script><style scoped>
.app {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}.nav-button {display: inline-block; /* 让链接显示为块级元素,以便应用宽度和高度 */padding: 10px 20px; /* 内边距 */margin: 0 5px; /* 外边距,用于按钮之间的间隔 */text-decoration: none; /* 移除下划线 */color: white; /* 文本颜色 */background-color: #007bff; /* 背景颜色 */border-radius: 5px; /* 边框圆角 */transition: background-color 0.3s; /* 平滑过渡效果 */
}.nav-button:hover {background-color: #0056b3; /* 鼠标悬停时的背景颜色 */
}.nav-button.router-link-active {background-color: #28a745; /* 当前激活(路由匹配)时的背景颜色 */
}.mai-content {/* 添加边框样式 */border: 2px solid #000; /* 边框宽度、样式和颜色 */border-radius: 5px; /* 可选:添加边框圆角 */padding: 20px; /* 可选:给内部内容添加一些内边距 */margin: 20px; /* 可选:给元素添加一些外边距,以便与其他元素隔开 */
}
</style>

04、Page1.vue代码如下:

<template><div class="mypage"><h2>当前求和为:{{ countStore.sum }}</h2><h2>姓名:{{ countStore.name }} , 年龄{{ countStore.age }}</h2><select v-model="n"><option :value="1">1</option><option :value="2">2</option><option :value="3">3</option></select><button @click="add"></button><button @click="changeData">修改</button></div>
</template><script lang="ts" name="page1" setup>
import {ref} from "vue";
import {useCountStore} from "@/store/count";const countStore = useCountStore();let sum = ref(1);
let n = ref(1);function add() {countStore.sum += n.value;
}function changeData() {countStore.$patch({sum: 888,name: "李四",age: 22})
}
</script><style scoped>
.mypage {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;button {margin: 0 5px;}
}
</style>

05、Page2.vue代码如下:

<template><div class="mypage"><ul><li v-for="talk in myTalkStore.talklist":key="talk.id">{{ talk.id }} -- {{ talk.title }}</li><br><li v-for="talk in myTalkStore.$state.talklist":key="talk.id">{{ talk.id }} -- {{ talk.title }}</li></ul></div>
</template><script lang="ts" name="page2" setup>
import {useCountStore} from "@/store/count";const myTalkStore = useCountStore();
</script>
<style scoped>
.mypage {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;button {margin: 0 5px;}
}
</style>

06、效果如下:

 07、效果如下:

 

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

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

相关文章

极客少年旅游回忆录

Day 0 “意外惊喜”原本8:20的飞机直接给我干到8:05起飞,抵达成都天府机场大概在9:35。——哥们太早了,我们在成都租的车还没有及时赶到! 于是,我们等到10:10,驾驶着川 G的车在高速公路上行驶,我特别感慨:大城市的车真的好多!(不怕被超速了哈哈) 待 1h 之后,成功入住…

[vue3] vue3更新组件流程与diff算法

Vue3 中的 patch 函数结合 diff 算法,通过比较新旧 vnode 序列,优化组件更新流程。diff 算法复用旧节点并最小化移动操作,利用最长递增子序列算法提升渲染性能,可以有效减少创建和销毁节点的开销。在Vue3中,组件的更新通过patch函数进行处理。 patch函数源码位置:core/pa…

DDD的函数式编程实现

DDD是一种成熟的软件设计方法,旨在确保领域专家和开发人员能够有效合作,创造出高质量的软件。 本文介绍咋将FP(函数式编程)应用于DDD的实现,使其既优雅又简洁。C4模型中,软件架构图分为四个层次:“系统上下文”、“容器”、“组件”和“代码”。 “组件”是构成容器的基…

使用FModel提取黑神话悟空的资产

介绍使用FModel提取黑神话悟空资产的方法目录前言设置效果展示闲聊可能遇到的问题没有相应的UE引擎版本选项 前言 黑神话悟空昨天上线了,解个包looklook。本文内容比较简洁,仅介绍解包黑神话所需的专项配置,关于FModel的基础使用流程,请见《使用FModel提取UE4/5游戏资产》 …

rust库-ouroboros中文文档

文档原文:https://docs.rs/ouroboros/latest/ouroboros/attr.self_referencing.html 属性宏ouroboros::self_referencing #[self_referencing]此宏用于将常规结构转换为自引用结构。举个例子: use ouroboros::self_referencing;#[self_referencing] struct MyStruct {int_dat…

mini-lsm通关笔记Week1Day4

项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsmTask 1-SST Builder在此任务中,您需要修改: src/table/builder.rs src/table.rs SST由存储在磁盘上的数据块和索引块组成。通常,数据块都是懒加载的-直到用户发出请求,它们…

高效流程办公,相信自定义流程表单开发

对于自定义流程表单开发的优势特点,可以在本文中获得详细答案。如果要将企业内部的数据做好高效管理,需要借助更优质的软件平台。低代码技术平台够灵活、更高效、易维护、可视化操作等,可以满足日益扩大的业务需求,助力企业做好数据资源管理,共同为实现流程化办公和数字化…

041、Vue3+TypeScript基础,使用pinia库来储存数据

01、输入npm install pinia 02、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue//第一步:引入pinia import {createPinia} from piniaconst app = createApp(App);//第二步:创建pinia实例 c…

三维几何生成:多段线、圆弧

一、三维空间多段线几何 1 应用背景 ​​  opengl常用glLineWidth命令设置线宽,此线宽在透视投影中不会随着相机远近变化而缩放。项目中高版本glLineWidth命令失效,需要考虑如何快速、方便、宽度不变的多段线几何。方案a:纯shader绘制曲线,绘制到一个二维平面上,然后将平…

本地快速安装运行史上最强开源LLaMa3大模型

https://liaoxuefeng.com/blogs/all/2024-05-06-llama3/史上最强开源AI大模型——Meta的LLaMa3一经发布,各项指标全面逼近GPT-4。它提供了8B和70B两个版本,8B版本最低仅需4G显存即可运行,可以说是迄今为止能在本地运行的最强LLM。 虽然LLaMa3对中文支持不算好,但HuggingFac…

第二章 redis环境安装与配置

redis环境安装 redis的官方只提供了linux版本的redis,window系统的redis是微软团队根据官方的linux版本高仿的。 官方原版: https://redis.io/ 中文官网:http://www.redis.cn 1、下载和安装 下载地址:https://github.com/tporadowski/redis/releases使用以下命令启动redis服务…

CVSS(Common Vulnerability Scoring System)打分规则解读

CVSS(Common Vulnerability Scoring System)提供了一种根据漏洞的主要特征进行打分,反映其严重性的方法。CVSS 已成为被广泛使用的标准。 下面是CVSS 3.1版本计算器的界面截图,本文对Base Score的打分标准做解读,并提供一些建议。同时会列出每个维度选项的翻译。 Attack V…