昆明网站建设时间云南建设投资集团网站

web/2025/9/27 8:05:57/文章来源:
昆明网站建设时间,云南建设投资集团网站,黄页推广公司大全,地方网站欣赏#x1f3ac; 岸边的风#xff1a;个人主页 #x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想#xff0c;就是为了理想的生活 ! 目录 #x1f4da; 前言 #x1f4d8; 创建 Pinia #x1f4d8; Option Store #x1f4d8; Pinia 提供多种选项配… 岸边的风个人主页 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想就是为了理想的生活 ! 目录 前言 创建 Pinia Option Store Pinia 提供多种选项配置 Store: state getters actions persist 使用 Store 读取状态 调用 Actions 多个 Store Setup Store 数据持久化 Pinia 插件 购物车示例 Pinia 插件 实现一个持久化插件 写在最后 前言 Pinia,让状态管理再无难题! 作为Vue.js官方推荐的新星级管理库,Pinia为开发者带来前所未有的顺滑体验。你还在为复杂难懂的状态管理代码头疼吗?别急,用Pinia你可以告别一切烦恼! 本指南将为您还原Pinia的奥秘,您将掌握它独特的简洁API使用技巧,迅速成为状态管理的专家级大师!无论您是新手还是老鸟,这里的专业指导将助您在项目中如虎添翼,以最轻松的姿态管理复杂应用状态。 快来 Reshape Your State Management Skills吧!我们一起领略 Pinia的魅力! 创建 Pinia 在 main.js 中导入 createPinia 并使用: import { createApp } from vue import { createPinia } from piniaconst pinia  createPinia() const app  createApp(App)app.use(pinia)可以通过 app.config.globalProperties.$pinia 访问 Pinia 实例。 Option Store 与 Vue 的选项式 API 类似我们也可以传入一个带有 state、actions 与 getters 属性的 Option 对象废弃了Mutations 使用 defineStore API 定义 Store: import { defineStore } from piniaexport const useMainStore  defineStore(main, {// statestate: ()  {return {counter: 0}},// gettersgetters: {doubleCount(state) {return state.counter * 2}},// actionsactions: {increment() {this.counter }} })接收唯一 ID 作为第一个参数 state、getters、actions 定义方式与 Vue 组件类似 可以直接通过 this 访问状态 Pinia 提供多种选项配置 Store: state 定义响应式状态: state: ()  {return {count: 0} } 必须是一个返回状态对象的函数。 getters 定义 getter 计算属性: getters: {double(state) {return state.count * 2} }getter 可以接收参数: getters: {getMessage(state) {return (name  Vue)  Hello ${name} } }actions 定义方法修改状态: actions: {increment(amount  1) {this.count  amount} }actions 支持同步和异步操作。 persist 配置数据持久化,需要使用插件: persist: {enabled: true,strategies: [{key: my_store,storage: localStorage,},] } 使用 Store 通过 useXxxStore() 获取 Store 实例: import { useMainStore } from /stores/mainexport default {setup() {const main  useMainStore()main.increment()}  }读取状态、调用 actions 同 Vue 组件。 读取状态 // 直接读取 const count  main.count// 通过计算属性 const double  computed(()  main.doubleCount)// 通过 storeToRefs const { count }  storeToRefs(main)调用 Actions main.increment()const message  main.getMessage(Vue)多个 Store 可以拆分多个 Store 管理不同模块状态: stores |- user.js |- product.js单独导出每个 Store 并在组件中使用: import { useUserStore } from /stores/user import { useProductStore } from /stores/product export default {setup() {// ...} }Store 可以互相引用: // userStore.js import { useProductStore } from ./productexport const useUserStore  defineStore({// 可以直接使用 productStore })Setup Store 个人比较倾向这种语法 也存在另一种定义 store 的可用语法。与 Vue 组合式 API 的 setup 函数 相似我们可以传入一个函数该函数定义了一些响应式属性和方法并且返回一个带有我们想暴露出去的属性和方法的对象。 export const useCounterStore  defineStore(counter, ()  {const count  ref(0)function increment() {count.value}return { count, increment } })在 Setup Store 中 ref() 就是 state 属性 computed() 就是 getters function() 就是 actions Setup store 比 Option Store 带来了更多的灵活性因为你可以在一个 store 内创建侦听器并自由地使用任何组合式函数。不过请记住使用组合式函数会让 SSR 变得更加复杂。 数据持久化 Pinia 默认状态不持久化,可以通过插件实现持久化: npm install pinia-plugin-persistedstateimport persistedState from pinia-plugin-persistedstateconst pinia  createPinia() pinia.use(persistedState) 在 Store 中配置 persist: export const useUserStore  defineStore({persist: {enabled: true}  }) 配置 storage 指定存储位置: persist: {storage: sessionStorage }Pinia 插件 Pinia 生态已有许多插件,可以扩展更多功能: pinia-plugin-persistedstate:数据持久化 pinia-plugin-debounce:防抖修改状态 pinia-plugin-pinia-observable:转换成 Observable 使用插件: import piniaPluginPersist from pinia-plugin-persistpinia.use(piniaPluginPersist)Devtools Pinia支持Vue devtools 购物车示例 我们来通过一个购物车的例子看看 Pinia 的用法: // store.js import { defineStore } from piniaexport const useCartStore  defineStore(cart, {state: ()  {return {items: []  }},getters: {total(state) {return state.items.reduce((total, item)  {return total  item.price  }, 0)}},actions: {addItem(item) {this.items.push(item)},removeItem(id) {this.items  this.items.filter(i  i.id ! id)}} })在组件中使用: // Cart.vueimport { useCartStore } from /stores/cartsetup() {const cart  useCartStore()return {items: cart.items,total: cart.total} }可以看出代码非常简洁直观。 Pinia 插件 Pinia 插件是一个函数可以选择性地返回要添加到 store 的属性。它接收一个可选参数即 context。 export function myPiniaPlugin(context) {context.pinia // 用 createPinia() 创建的 pinia。 context.app // 用 createApp() 创建的当前应用(仅 Vue 3)。context.store // 该插件想扩展的 storecontext.options // 定义传给 defineStore() 的 store 的可选对象。// ... }然后用 pinia.use() 将这个函数传给 pinia pinia.use(myPiniaPlugin)插件只会应用于「在 pinia 传递给应用后」创建的 store否则它们不会生效。 实现一个持久化插件 getStorage 函数根据提供的 key 从本地存储中读取数据。如果数据无法解析或不存在则返回 null。 setStorage 函数将提供的值转换为 JSON 格式并以指定的 key 保存到本地存储中。 DEFAULT_KEY 常量表示默认的本地存储键名前缀。如果在选项中未提供自定义键名将使用该默认键名。 Options 类型定义了插件选项对象的类型包含 key本地存储键名前缀和 needKeepIds需要进行持久化的 Pinia 存储的 ID 数组两个可选属性。 piniaPlugin 函数这是主要的插件函数它接收一个选项对象并返回一个用于处理 Pinia 存储的函数。 import { PiniaPluginContext } from pinia; import { toRaw } from vue;// Get data from local storage by key export function getStorage(key) {const data  localStorage.getItem(key);try {return JSON.parse(data);} catch (error) {return null;} }// Set data to local storage with a key export function setStorage(key, value) {const data  JSON.stringify(value);localStorage.setItem(key, data); }const DEFAULT_KEY  pinia;type Options  {key?: string;needKeepIds?: string[]; };const piniaPlugin  ({ key  DEFAULT_KEY, needKeepIds  [] }: Options)  {return (context: PiniaPluginContext)  {const { store }  context;const data  getStorage(${key}-${store.$id});const subscribeToStore  ()  {if (needKeepIds.length  0 || needKeepIds.includes(store.$id)) {setStorage(${key}-${store.$id}, toRaw(store.$state));}};store.$subscribe(subscribeToStore);return {...data,};}; };export default piniaPlugin;写在最后 Pinia是Vue.js的新一代状态管理解决方案,由Vue核心团队开发,其设计理念简洁直观,易于上手使用。相较于Vuex,Pinia解决了其过于复杂的问题,提供了更符合Vue理念的状态管理方式。 Pinia通过组合式Store结构,实现了状态、获取器、操作行为的逻辑分离。开发者可以轻松地创建Store模块,在Vue组件内直接使用$store语法访问状态,无需导入映射函数,语法非常简洁。同时Pinia还提供了完整的TypeScript支持,可以为State、Getters、Actions添加类型检测。 除此之外,Pinia还有模块热更新,无需重载页面即可看到状态变更,开发调试体验更佳。同时支持Vue DevTools进行调试,也提供插件机制等拓展功能。总的来说,Pinia是一个非常轻量、易于理解和使用的状态管理方案,可以极大地提升Vue项目的开发效率。它是Vue生态中简洁高效管理状态的首选解决方案。

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

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

相关文章

成都网站建设网站建设哪家好网页设计图片和文字怎么在一排

来源:机器之心编辑:杜伟、陈萍将芯片的布局规划看作一个深度强化学习问题,谷歌大脑团队希望用 AI 来提升芯片设计效率。基于 AI 的最新设计方案可以在数小时内完成人类设计师耗费数月才能完成的芯片布局,这将有可能引领一场新的芯…

到哪查找网站域名夹江移动网站建设

题目截图 题目翻译 题目分析 正难则反,考虑所有不符合的例子 由于n很小,所以可以状态压缩二进制遍历完全部不符合例子的组合 对于不符合的例子,假设其中第i个不符合,那么就消耗掉fi 1个球 以此类推,减剩下s2个球 这时…

江苏建设监理网站网页源码在线查看工具

文章目录 一、localhost是什么?二、localhost 在平时用到的地方三、 localhost 与 127.0.01 一、localhost是什么? localhost 是一个特殊的主机名,通常指代本机。它被用来进行本地开发和测试,也常被用作网络配置中的占位符&#…

如何做网站推广自己产品有哪些网站是html5的

一、内存管理 分页存储管理,是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块&#xf…

代理网站是什么公司网页设计项目简历

共同点:都是用来表示Spring某个类的是否可以接收HTTP请求 不同点: controller表示的是一般是页面处理 restcontroller则是json字符串常用的法则

衡水做网站的公司网络服务器忙

app engine在本教程的第一部分中, 我介绍了如何使用OAuth进行Google API服务的访问/身份验证。 不幸的是,正如我稍后发现的那样,我使用的方法是OAuth 1.0,显然现在Google正式弃用了OAuth 1.0,改用OAuth 2.0版本。 显然…

利用网盘 建网站百度推广图片尺寸要求

线程组:使用复杂场景的性能测试 有时候我们做性能测试时,只依靠自带的线程组,显示满足不了性能测试中比较复杂的场景,下面这两种线程组可以帮助你很好的完成复杂的场景 第一种:Stepping Thread Group 在取样器错误后…

手机网站安装长春百度关键词搜索

父控件 使用子控件时&#xff0c;为了能让子控件 在控件上面使用灵活多变&#xff0c;这里使用插槽。 简单插槽使用 <script>// 创建 vue实例const app Vue.createApp({ data() { return {text: 提交 } },// slot 插槽// slot 中使用的数据&#xff0c;作用域的问题&…

网站网页设计招聘网站logo是什么

一直觉得中央空调是高颜值神器但是对于我这种万年单身狗在考虑开启率的情况下好像还是风管机和挂机比较实用但是又嫌弃挂机的电线冷凝水管丑到不行直到我看到了-----管线背出的挂机仿佛开启了新世界的大门| 怎么做到的 |我问了好多卖中央空调的有没有管线背出的挂机都和我说不清…

东莞网站建设什么价格便宜公司招聘网站续费申请

1.CNN中池化的作用 池化层的作用是对感受野内的特征进行选择&#xff0c;提取区域内最具代表性的特征&#xff0c;能够有效地减少输出特征数量&#xff0c;进而减少模型参数量。按操作类型通常分为最大池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling)&a…

北京公司网站建设买完域名接下来怎么弄

【问题描述】&#xff1a;Jenkins中明明配置了邮箱发送时要带压缩附件&#xff0c;收到的邮箱中却没有附件内容 【问题定位】&#xff1a;压缩附件没有放在Jenkins工作空间下&#xff0c;所以发送的邮件并未发送附件 【解决办法】&#xff1a; 1&#xff09;把压缩附件放到J…

搬家网站模板营销融合app

记录一下自己看过的视频 专利书写指南_哔哩哔哩_bilibili 纯干货&#xff01;人工智能算法类发明专利撰写规范教程&#xff0c;中国地质大学教授一小时精讲发明专利撰写规范&#xff0c;究极通俗易懂&#xff01;_哔哩哔哩_bilibili 记录自己如何让学习写专利&#xff1a; …

竞价网站转化率为多少网站中文商标域名注册

小编为大家整理了计算机数据结构词汇中英对照&#xff0c;希望对你有帮助哦!计算机数据结构词汇中英对照&#xff1a;栈 stack队列 queue串 string数组 array树 tree图 grabh查找&#xff0c;线索 searching更新 updating排序(分类) sorting插入 insertion数据抽象 data abstra…

网站地链接结构户型图装修设计图app

在编程的世界里&#xff0c;Git 就像水一样常见&#xff0c;以至于我们认为它是创建和管理代码更改的唯一可行的工具。 前 Facebook 员工&#xff0c;2024 年 首先&#xff0c;我为什么关心&#xff1f; 我致力于构建 Graphite&#xff0c;它从根本上受到 Facebook 内部工具的…

寻找网站建设员塘沽官网

思路&#xff1a; 1、登录成功后将 得到的token设置为集合变量 2、在需要携带Authorization的请求头上使用该集合变量 关键代码 const responseData pm.response.json(); if(responseData.code 1) {// 获取tokenconst {data:{token}} responseData// 设置为集合变量pm.colle…

网站轮播图居中代码怎么写优化网站排名提高

导航&#xff1a;网站首页 >红玫瑰的含义,玫瑰花个数的含义时间&#xff1a;2018-2-27相关问题:匿名网友:1朵玫瑰代表——我的心中只有你ONLY YOU&#xff01;2朵玫瑰代表——这世界只有我俩&#xff01;3朵玫瑰代表——我爱你I LOVE YOU&#xff01;4朵玫瑰代表——至死不渝…

吉林北京网站建设网站推广哪个平台好

引言 之前提到过拥塞问题&#xff0c;如果大量数据疯狂涌入&#xff0c;接收端无法及时处理就会导致数据丢包&#xff0c;从而使得通信受到干扰。之前的连续ARQ如果不加以节制&#xff0c;疯狂发送报文&#xff0c;接收端无法及时返回ACK就会导致网络瘫痪。 滑动窗口机制协议 这…

对学院网站建设的建议django做网站

Fast SAM C推理部署—TensorRT 核心源代码在结尾处有获取方式 晓理紫 0 XX开局一张图&#xff0c;剩下… 1 为什么需要trt部署 主要是在GPU上推理可以获得更高的推理速度。可与onnxruntim推理向比较一下 对比视频 2 TensorRt部署 2.1 环境与条件 需要配置TensorRt相关环境 这…

网站建设维修服务流程网站建设业务流程

1.2 简单输出 本章的后续部分&#xff0c;包含了一系列简单但典型的Awk程序样例&#xff0c;都是对前面的emp.data文件进行操作。为防遗忘&#xff0c;这里把emp.data文件再发一遍&#xff1a; Beth 21 0 Dan 19 0 Kathy 15.50 10 Mark 25 20 M…

专业人士怎样建网站商城平台

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在图像处理中&#xff0c;解决了分割的问题之后&#xff0c;下面就是属性信息的提取。在这其中&#xff0c;有一种属性是非常重要的 &#xff0c;那…