043、Vue3+TypeScript基础,pinia库使用action,在函数中对存储数据进行修改

news/2024/11/15 11:41:34/文章来源:https://www.cnblogs.com/tianpan2019/p/18372977

01、main.js代码如下:

// 引入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、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>

03、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;//第三种方法,调用函数控制增长和逻辑
  countStore.myAdd(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>

04、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>

05、count.ts代码如下:

import {defineStore} from 'pinia'export const useCountStore =defineStore('count', {actions: {//定义一个函数,可以在函数控制增长和逻辑
            myAdd(value: number) {if (this.sum < 10) {this.sum += value;}}},//真正储存数据的地方
        state() {return {sum: 6,name: '张三',age: 18,talklist: [{id: 'a001', title: '1今天你想我了没'},{id: 'a002', title: '2今天你想我了没'},{id: 'a003', title: '3今天你想我了没'},]}}})

06、界面如图

 07、浏览器效果如下:

 

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

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

相关文章

【内网渗透系列】域内权限划分

域本地组 成员范围:林中所有的用户、全局组、通用组、本域的域本地组。 作用范围:本域。 用途:给域内的资源设置访问权限。 举例:test域有一台打印机P,test域中的用户A和B需要有访问权,新建域本地组DL,给域本地组DL赋予访问打印机P的权限,把用户A和B加到域本地组DL即可…

眼图分析

眼图分析 简介 眼图作为分析高速互连系统信号完整性的工具,其包含了十分丰富的信息。所谓眼图就是将高速数字信号不同位置的数据比特按照时钟的间隔叠加在一起自然形成的一个统计分布图。示波器测量的信号是一段时间的波形,主要反映的是细节信息,但是眼图反映的是传输链路上…

【OS系列】程序、进程与线程之区别大揭秘,一图读懂胜千言

1. 程序(Program) 程序是一组指令的集合,它存储在磁盘上,是一个静态的实体。程序本身并不执行任何操作,它只是提供了一个执行的蓝图。例如,一个编译好的可执行文件(如Windows的.exe文件)就是一个程序。2. 进程(Process) 进程是程序的一次执行实例,是操作系统进行资源…

【powe=osc=pallr】【DDR】 【AHD】 【USB-ADC】 【SD-EMMC】 【AUDIO】 【MIPICSI-AHD】 【MIPIDSI-LCDC】 【LDDDR4】 【EMMC】 【TYPE-C】 【IMX307】 【AHD-CON】 【LCD-CON-POWER】 【WIFI】 【AUDIO-EXT】 【POWER-IN】 【POWER-VCC-NPU-EPU】 【PMIC】…

CF1693F题解

备注 发表时间:2023-06-17 21:51 前言 yny 学长来 cdqz 讲课,写一篇讲课的题的题解纪念一下。 题意 给你一个 01 序列,有以下操作:选择一段区间 设 \(cnt_0,cnt_1\) 分别表示该区间中 0 和 1 的数量。 花费 \(|cnt_0-cnt_1|+1\) 的代价对区间进行升序排序。求最小代价。 思…

DDD建模后写代码的正确姿势(Java、dotnet双平台)

本文书接上回《一种很变态但有效的DDD建模沟通方式》,关注公众号(老肖想当外语大佬)获取信息:最新文章更新;DDD框架源码(.NET、Java双平台);加群畅聊,建模分析、技术交流;视频和直播在B站。终于到了写代码的环节 如果你已经阅读过本系列前面的所有文章,我相信你对需…

JetBrains RustRover 2024.2 (macOS, Linux, Windows) - 面向 Rust 开发者的强大 IDE

JetBrains RustRover 2024.2 (macOS, Linux, Windows) - 面向 Rust 开发者的强大 IDEJetBrains RustRover 2024.2 (macOS, Linux, Windows) - 面向 Rust 开发者的强大 IDE JetBrains 跨平台开发者工具 请访问原文链接:https://sysin.org/blog/jetbrains-rustrover/,查看最新版…

JetBrains RubyMine 2024.2 (macOS, Linux, Windows) - 最智能的 Ruby 与 Rails IDE

JetBrains RubyMine 2024.2 (macOS, Linux, Windows) - 最智能的 Ruby 与 Rails IDEJetBrains RubyMine 2024.2 (macOS, Linux, Windows) - 最智能的 Ruby 与 Rails IDE JetBrains 跨平台开发者工具 请访问原文链接:https://sysin.org/blog/jetbrains-rubymine/,查看最新版。…

使用分布式锁解决IM聊天数据重复插入的问题

导航业务背景 问题分析与定位 探索可行的解决方案数据库层面处理——唯一索引 应用程序层面处理——分布式锁分布式锁概述分布式锁需要具备哪些特性? 分布式锁有哪些实现方式?基于数据库的实现方式 基于Redisson实现方式Redission介绍概述 可重入锁基于Redisson解决方案方案梳…

IEC104初学者教程,第十章:APDU 序列号

第十章:APDU 序列号平时学习规约或调试IEC104或IEC101设备,需要IEC104/101模拟器,推荐一款: 主站下载地址:IEC104主站模拟器 从站下载地址:IEC104从站模拟器未受干扰的编号 I 格式 APDU 序列V(S) = 发送状态变量(发送序列号) V(R) = 接收状态变量(接收序列号) Ac…

读软件开发安全之道:概念、设计与实施05模式(上)

模式1. 模式 1.1. 模式分类1.1.1. 设计属性1.1.2. 暴露最少信息1.1.3. 冗余1.1.4. 强力执行1.1.5. 信任与责任1.1.6. 反模式1.2. 模式可以缓解或者避免很多种类的风险,它们可以形成一个重要的工具箱,帮我们解决潜在的安全威胁 1.3. 不需要为了解决一个问题就把所有设计模式全…

Dapr v1.14 版本已发布

Dapr是一套开源、可移植的事件驱动型运行时,允许开发人员轻松立足云端与边缘位置运行弹性、微服务、无状态以及有状态等应用程序类型。Dapr能够确保开发人员专注于编写业务逻辑,而不必分神于解决分布式系统难题,由此显著提高生产力并缩短开发时长。Dapr 是用于构建云原生应用…