vue3学习笔记(pinia)

871f48ece9de49528f53e6b76c461a89.png

defineModel:快速实现组件的双向绑定

57265f9ac2ca4eb09183b0de7220b6eb.png

e904851ff0a1426dbfea4c84fcc6b257.png

pinia:在仓库中提供数据和使用数据

创建store文件夹,在里面创建counter.js,以提供数据,注意需要return 和 export,export的是一个函数。


import { defineStore } from "pinia";import { ref } from 'vue'//定义store
//defineStore(仓库的唯一标识, () => {...})export const useCountStore = defineStore('counter', () => {//声明数据state
const count = ref(0)//声明操作数据的方法action//声明基于数据派生的计算属性getters//声明数据state = msgconst msg = ref('weff')//使用数据的话需要returnreturn{count,msg} 
})

在app.vue里面调用数据,不管父组件还是子组件都可以调用,方法相同。首先导入,导入的对象要加括号

<script setup>import {useCountStore} from '@/store/counter'const counterStore = useCountStore()
console.log(counterStore)
</script><template><div>{{ counterStore.count }}{{ counterStore.msg }}</div>
</template><style scoped></style>

pinia:在仓库中声明操作数据的方法action(普通函数)和使用方法

声明操作数据的方法action(普通函数),记得在return里导出

counter.js中

const addCount = () => count.value++

  const subCount = () => count.value--


import { defineStore } from "pinia";import { ref } from 'vue'//定义store
//defineStore(仓库的唯一标识, () => {...})export const useCountStore = defineStore('counter', () => {//声明数据state
const count = ref(0)//声明操作数据的方法action(普通函数)
const addCount = () => count.value++const subCount = () => count.value--//声明基于数据派生的计算属性getters//声明数据state = msgconst msg = ref('weff')//使用数据的话需要returnreturn{count,msg,addCount,subCount} 
})

vue里使用:方法与调用数据大致相同,在vue里添加事件即可。

<script setup>
import {useCountStore} from '@/store/counter'const counterStore = useCountStore()
</script><template><div>Son2<button @click="counterStore.subCount">-</button></div>
</template><style scoped></style>

pinia:声明基于数据派生的计算属性getters(computed)与调用

js里声明基于数据派生的计算属性getters(computed)

const double = computed(() => count.value * 2)


import { defineStore } from "pinia";import { ref } from 'vue'import { computed } from 'vue'//定义store
//defineStore(仓库的唯一标识, () => {...})export const useCountStore = defineStore('counter', () => {//声明数据state
const count = ref(0)//声明基于数据派生的计算属性getters(computed)
const double = computed(() => count.value * 2)//声明数据state = msgconst msg = ref('weff')//使用数据的话需要returnreturn{count,msg,double} 
})

vue里调用,注:是属性,不是方法,不要绑click之类的

<script setup>
import {useCountStore} from '@/store/counter'
const counterStore = useCountStore()
</script><template><div>Son1<h1>{{counterStore.count}} - {{ counterStore.double }}</h1></div>
</template><style scoped></style>

pinia:axios异步方法获取接口数据

1.js里先声明异步方法,注意使用async,await,还有return

import { defineStore } from "pinia"
import axios from 'axios'
import {ref}  from 'vue'export const useChannelStore = defineStore('channel',()=>{//声明数据
const channelList = ref([])//声明操作数据的方法
const getList = async () => {
//支持异步
const {data:{data}} = await axios.get('http://geek.itheima.net/v1_0/channels')channelList.value = data.channels}return{channelList ,getList}
})

2.调用方法

<script setup>import {useCountStore} from '@/store/counter'
import{useChannelStore} from '@/store/channel.js'
const counterStore = useCountStore()
const channelStore = useChannelStore()
console.log(counterStore)
</script><template><div><h3>barn</h3>{{ counterStore.count }}{{ counterStore.msg }}<button @click="channelStore.getList">获取频道数据</button>
<ul><li v-for="item in channelStore.channelList" :key="item.id">item.name</item></li><li>音乐</li>
</ul></div>
</template><style scoped></style>

pinia:解构:方法解构无影响,属性解构会失去响应性,需要加方法storeToRefs就不会失去响应性

import { storeToRefs } from 'pinia';

const {getList} = channelStore

const {channelList} =  storeToRefs(channelStore)

 

pinia持久化

配置:main.js


import { createApp } from 'vue'
import {createPinia} from 'pinia'
import App from './App.vue'
//导入持久化插件
import persist from 'pinia-plugin-persistedstate'
const pinia = createPinia()//创建pinia实例
const app = createApp(App)//创建根实例
app.mount('#app')app.use(pinia.use(persist))

store仓库的js里配置

import { defineStore } from "pinia"import {ref}  from 'vue'export const useChannelStore = defineStore('channel',()=>{//声明数据
const channelList = ref([])//声明操作数据的方法return{channelList}
},{persist:{key:'hm-counter',paths:['count']}
})

 

插件:快速开始 | pinia-plugin-persistedstate (prazdevs.github.io)

101c4fada70a4786b660d4fcb40fe44f.png

 

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

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

相关文章

智慧驿站式的“智慧公厕”,给城市新基建带来新变化

随着智慧城市建设的推进&#xff0c;智慧驿站作为一种多功能城市部件&#xff0c;正逐渐在城市中崭露头角。这些智慧驿站集合了智慧公厕的管理功能&#xff0c;为城市的新基建带来了全新的变革。本文以智慧驿站智慧公厕源头实力厂家广州中期科技有限公司&#xff0c;大量精品案…

蓝桥杯第十三届省赛C++B组(未完)

目录 刷题统计 修剪灌木 X进制减法 【前缀和双指针】统计子矩阵 【DP】积木画 【图DFS】扫雷 李白打酒加强版 DFS (通过64%&#xff0c;ACwing 3/11&#xff09;; DFS(AC) DP&#xff08;AC&#xff09; 砍竹子(X) 刷题统计 题目描述 小明决定从下周一开始努力刷题准…

基于JAVA的汽车售票网站论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对汽车售票信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差…

ChatGPT与生成式AI:教育领域内新的浪潮与挑战

随着ChatGPT和其他生成式AI技术&#xff0c;如GPT-3.5、GPT-4的出现&#xff0c;我们正见证教育领域一场前所未有的变革浪潮。这些技术不仅推动了教育方式的进步&#xff0c;也为学习者带来了全新的机遇和挑战。 NO.1教育变革的新浪潮 生成式AI技术&#xff0c;特别是ChatGPT&…

使用SquareLine Studio创建LVGL项目到IMX6uLL平台

文章目录 前言一、SquareLine Studio是什么&#xff1f;二、下载安装三、工程配置四、交叉编译 前言 遇到的问题&#xff1a;#error LV_COLOR_DEPTH should be 16bit to match SquareLine Studios settings&#xff0c;解决方法见# 四、交叉编译 一、SquareLine Studio是什么…

04 Python进阶:MySQL-PyMySQL

什么是 PyMySQL&#xff1f; PyMySQL 是一个用于 Python 的纯 Python MySQL 客户端库&#xff0c;提供了与 MySQL 数据库进行交互的功能。PyMySQL 允许 Python 开发人员连接到 MySQL 数据库服务器&#xff0c;并执行诸如查询、插入、更新和删除等数据库操作。 以下是 PyMySQL …

超图SuperMap-Cesium,地形图层,可以渲染一个或多个地形(地形可缓存DEM,TIN方式),webGL代码开发(2024-04-08)

1、缓存文件类型TIN格式&#xff0c;TIN的地形sct只能加一个 const viewer new Cesium.Viewer(cesiumContainer); viewer.terrainProvider new Cesium.CesiumTerrainProvider({isSct: true, // 是否为iServer发布的TIN地形服务,stk地形设置为falserequestWaterMask : true,…

【前沿模型解析】潜在扩散模型 2-2 | 手撕感知图像压缩基础块上下sample块

文章目录 1 DownSample下采样部分1.1 两种实现方式1.2 代码实现 2 UpSample上采样部分2.1 代码实现 1 DownSample下采样部分 1.1 两种实现方式 下采样&#xff0c;即改变特征图的尺寸 下采样的话源码实现了两种方式 方式一&#xff1a;是通过卷积实现下采样&#xff0c;我们…

谈谈什么是 Redis

&#x1f525;博客主页&#xff1a;fly in the sky - CSDN博客 &#x1f680;欢迎各位&#xff1a;点赞&#x1f44d;收藏⭐️留言✍️&#x1f680; &#x1f386;慢品人间烟火色,闲观万事岁月长&#x1f386; &#x1f4d6;希望我写的博客对你有所帮助,如有不足,请指正&#…

Linux(05) Debian 系统修改主机名

查看主机名 方法1&#xff1a;hostname hostname 方法2&#xff1a;cat etc/hostname cat /etc/hostname 如果在创建Linux系统的时候忘记修改主机名&#xff0c;可以采用以下的方式来修改主机名称。 修改主机名 注意&#xff0c;在linux中下划线“_”可能是无效的字符&…

软件测试学习之MySQL学习笔记(完结)

目录 1. 数据库**** 1.1. 概念**** 1.2. 分类**** 1.2.1. 关系型数据库**** 1.2.1.1. SQL**** 1.2.2. 安装**** 1.2.2.1. Navicat**** 2. SQL语句**** 2.1. 常用数据类型**** 2.2. 数据库**** 2.3. 表**** 2.3.1. 字段约束**** 2.4. 数据**** 2.4.1. 增 insert**…

JavaSE:图书管理系统

目录 一、前言 二、内容需求 三、类的设计 &#xff08;一&#xff09;图书类 1.Book 类 2.BookList 类 &#xff08;二&#xff09;操作类 1.添加图书AddOperation类 2.借阅图书BorrowOperation类 3.删除图书DelOperation类 4.显示图书ShowOperation类 5.退出系统Ex…

ChromeOS 中自启动 Fcitx5 和托盘 stalonetray

ChromeOS 更新的飞快&#xff0c;旧文章的方法也老是不好用&#xff0c;找遍了也没找到很好的可以开机自启动 Linux VM 和输入法、托盘的方法。 研究了一下&#xff08;不&#xff0c;是很久&#xff09;&#xff0c;终于找到个丑陋的实现。 方法基于 ChromeOS 123.0.6312.94…

linux 开机自启动

方式1—依赖桌面启动&#xff0c;一般适用与UI相关程序 1、创建运行脚本&#xff0c;以管理员放方式运行&#xff0c;加入密码 vim runapp.sh #!/bin/bash cd /home/nvidia/test echo ‘passcode’ | sudo -S ./testapp 2、终端输入 gnome-session-properties 3、在com…

os.listdir()bug总结

今天测试出一个神奇的bug&#xff0c;算是教训吧&#xff0c;找了两天不知道问题在哪&#xff0c;最后才发现问题出现在这 原始文件夹显示 os.listdir()结果乱序 import os base_path "./file/"files os.listdir(base_path)print(files)问题原因 解决办法(排序) …

即插即用篇 | YOLOv8引入Haar小波下采样 | 一种简单而有效的语义分割下采样模块

本改进已集成到 YOLOv8-Magic 框架。 下采样操作如最大池化或步幅卷积在卷积神经网络(CNNs)中被广泛应用,用于聚合局部特征、扩大感受野并减少计算负担。然而,对于语义分割任务,对局部邻域的特征进行池化可能导致重要的空间信息丢失,这有助于逐像素预测。为了解决这个问题…

【进阶六】Python实现SDVRPTW常见求解算法——遗传算法(GA)

基于python语言&#xff0c;采用经典蚁群算法&#xff08;ACO&#xff09;对 带硬时间窗的需求拆分车辆路径规划问题&#xff08;SDVRPTW&#xff09; 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整2.1 需求拆分2.2 需求拆分后的服务时长取值问题 3. 求解结果4. 代码片段…

智慧水库解决方案(打造水库智慧监测体系)

​作为一名水利自动化系统集成商,最近我司接手了一个智慧水库建设项目。这个项目位于一座山区的大型水库,目的是对其进行现代化、智能化改造,提升供水、防洪等管理水平。&#xff08;key-iot.com.cn&#xff09; 在方案设计之初,我们组织了现场勘测,全面了解水库的实际情况。这…

创建型模式--2.简单工厂模式【人造恶魔果实工厂1】

1. 工厂模式的特点 在海贼王中&#xff0c;作为原王下七武海之一的多弗朗明哥&#xff0c;可以说是新世界最大的流氓头子&#xff0c;拥有无上的权利和无尽的财富。他既是德雷斯罗萨国王又是地下世界的中介&#xff0c;控制着世界各地的诸多产业&#xff0c;人造恶魔果实工厂就…

基于springboot实现校园资料分享平台系统项目【项目源码+论文说明】

基于springboot实现校园资料分享平台系统演示 摘要 随着信息互联网购物的飞速发展&#xff0c;国内放开了自媒体的政策&#xff0c;一般企业都开始开发属于自己内容分发平台的网站。本文介绍了校园资料分享平台的开发全过程。通过分析企业对于校园资料分享平台的需求&#xff…