位置: IT常识 - 正文

Pinia(二)了解和使用Store

编辑:rootadmin
Pinia(二)了解和使用Store StoreStore 是保存状态(state)和业务逻辑的实体, store 不应该与我们的组件绑定. 换句话说, store 就是全局状态.store 有三个关键概念, 分别是 state, getters 和 actions, 这与 Vue 组件中的 data, computed 和 methods 是相对应的概念.定义 store通过 defineStore 函数定义 store.defineStore 接收两个参数

id: 唯一的标识, string 类型. Pinia 使用 id 与开发者工具建立联系.第二个参数可以是一个函数, 也可以是一个对象.defineStore 返回一个函数, 一般约定将返回值命名为 use....第二个参数: 对象类型如果要传入对象类型作为第二个参数, 在对象中可以配置state: 状态, 即数据. 📕注意 state 是一个函数, 函数的返回值才是真正定义的数据getters: 计算属性actions: 修改状态的方法export const useCounterStore = defineStore('counter', { state: () => { return { count: 0, } }, getters: { doubleCount: (state) => { return state.count * 2; } }, actions: { increment(a: number) { this.count += a } }})第二个参数: 函数类型在函数中可以通过 ref/reactive 定义响应式数据, 通过 computed 和 watch 定义计算属性和侦听器, 再定义一些修改数据的方法, 并通过返回对象的形式将其中一些数据暴露出去.import { defineStore } from 'pinia';import { ref } from 'vue';export const useNameStore = defineStore('name', () => { const name = ref('tom'); function setName(newName: string) { name.value = newName; } return { name, setName }});使用 store

推荐整理分享Pinia(二)了解和使用Store,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

无论定义 store 时传入的参数是对象类型还是函数类型, 调用方法一致的. 我们需要在 setup() 函数或 <script setup> 中使用

import { useCounterStore } from '../store';import { useNameStore } from '../store/index2'// 第一个store: countconst store = useCounterStore();function countPlus() { store.increment(1);}// 第二个store: nameconst name1 = useNameStore();function updateName1() { name1.setName('jerry1' + Math.random())}

📕store 实例并不会被创建直到调用 useNameStore()

可以直接通过 store. 的方式访问 store 的 state, 和

<h2>{{store.count}}</h2><button @click="countPlus">countPlus</button><hr><h2>{{ name1.name }}</h2><button @click="updateName1">updateName1</button>

Pinia(二)了解和使用Store

📕注意修改数据时, 页面并没有失去响应式, 调用 isProxy 可以看出 use... 返回的结果统统都是响应式的数据

失去响应式的陷阱

如果解构 use.. 的返回值, 那么将失去响应式❗❗❗❗❗const { name, setName } = useNameStore();function updateName() { setName('jerry' + Math.random());}<h2>{{ name }}</h2><button @click="updateName">updateName</button>

storeToRefs

为了从 store 中解构出属性并且保持其响应式, 需要调用 storeToRefs. storeToRefs 将为每个响应式数据创建 ref.先看传入函数类型的 storeconst nameStore2 = storeToRefs(useNameStore());console.log('nameStore2', nameStore2)

📕注意返回的 storeToRefs 返回的对象中只有 name, 而没有 setName, 因此完整的写法应该是

const nameStore = useNameStore();const { setName } = nameStore;const { name } = storeToRefs(useNameStore());再看传入对象类型的 storeconst store = useCounterStore();const countStore2 = storeToRefs(store)console.log('countStore2', countStore2);

📕只有 state 和 getters, 没有 actions, 因此要从 useCounterStore() 的返回值中解构出 actions 中的方法

const store = useCounterStore();const { count, doubleCount } = storeToRefs(store);const { increment } = store;function countPlus1() { increment(2);}

感谢你看到这里😀

本文链接地址:https://www.jiuchutong.com/zhishi/293077.html 转载请保留说明!

上一篇:前端401错误 & 解决方法:响应拦截器(前端报405错误)

下一篇:HTML + CSS + JavaScript 实现注册页面信息验证 详细教程(表单验证)(htmlcssjavascript网页制作)

  • 工资完整的账务处理
  • 月薪3万个人所得税是多少
  • 资源税的税目有几个
  • 委托外单位研发的研发费用加计扣除最新政策
  • 工会活动奖励现金怎么入账
  • 广告公司小规模税率
  • 一般纳税人暂估成本的账务处理
  • 更新改造过程中被替换部件的账面价值
  • 应收账款零头没有收到如何账务处理
  • 未计提坏账准备金额在哪个科目
  • 生产企业商贸企业
  • 购货方跨月进项税额转出分录
  • 进项税发票不认证可以吗
  • 国外公司进口能退税吗
  • 津贴证明是让单位开吗
  • 投标标费退回怎么做分录
  • 财务报表教育费附加包含地方教育费附加吗
  • 赠送客户产品账务处理
  • 税务申报利润表本期金额
  • 一般纳税人进货收到普票怎么做账
  • 继续教育专项附加扣除需要什么材料
  • 固定资产少计提了怎么办
  • 坏账准备冲回是借方还是贷方
  • 商业一般纳税人税率多少
  • linux hdparm
  • 租金收入缴纳个税
  • 收到保险公司的车赔款会计分录怎么写
  • low是什么文件
  • 坏账减值准备账务处理
  • 营改增后固定资产报废处置收入计税
  • 工伤报销入账
  • html和css介绍
  • php三元运算符简单例子
  • nginx搭建静态资源服务器
  • javascript中文手册
  • 终于见识到什么叫云横秦岭了
  • 财务费用的增加记在哪一方
  • 网上抄税报税操作流程
  • 软件增值税即征即退文件
  • 利润表的格式分为哪几种
  • 委托贷款利息收入
  • 帝国cms可以做商标吗
  • 货款分批付的会计分录
  • 小规模销项税分录
  • 休产假的工资扣个人所得税吗
  • 发票开具就能做账了吗?
  • 支付给个人的佣金没有发票
  • 公司账户的钱如何转出
  • 不含税劳务报酬7000
  • 工程结算价超过合同价10%
  • 预付账款有余额吗
  • 审车费用表
  • 生产性生物资产账务处理
  • 公司卖掉软件计入成本吗
  • 期末留抵税额可以退税吗
  • 记账簿的目的在于为企业
  • 电脑winxp系统
  • xbox无法连接无线网络
  • 用心一也的一是什么词类活用
  • freebsd windows
  • 如何ie8升级到10
  • macbookairfacetime
  • rhel配置网卡文件和图形界面
  • win7系统开机
  • 2016年首个熊猫电站是哪一个
  • opengl教程48讲
  • cocos2dx3.3在Win7(64位)上Android开发环境搭建(提要)
  • unity碰撞得分代码
  • 什么叫懒加载
  • cmd更改文件属性
  • python xml dom
  • unity 动态生成模型
  • 如何设置python
  • jquery滚动事件
  • android中fragment
  • 非正常户记录
  • 年度营业账簿印章怎么写
  • 1.8排量够用吗
  • 增值税率下降
  • 增值税电子专用发票如何进行冲红处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设