位置: 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网页制作)

  • 增值税和附加税一共几个点
  • 注册资本 投资比例
  • 个体户一个月能领多少发票
  • 城镇土地使用税纳税义务发生时间
  • 个税完税凭证在哪里打印出来
  • 收入未确认可以结转成本吗
  • 差旅费应纳入社保缴费基数吗?
  • 支付本月租金计入什么科目
  • 装修费用如何摊销成本
  • 支票遗失声明书范文
  • 应收账款对应的科目有哪些
  • 待抵扣进项税额是什么情况下用的
  • 长期合同收入与应收帐款如何处理?
  • 律师事务所计提准备金的标准
  • 营改增开票规定
  • 普通发票冲红的限制几张以上
  • 案例讲解:将自己的房产用于办公使用,在税收的缴纳中该如何把控?
  • 购买库存商品收到发票怎样做分录
  • 企业微信收款的钱怎么提取出来
  • 主营业务税金及附加包括什么
  • 发票遗失如何补开
  • 开出去的发票没有进项发票应怎么核算成本?
  • 交际应酬费可以抵扣吗
  • PHP:getallheaders()的用法_Apache函数
  • 装修房子监理
  • 施工行业企业
  • 哪些费用可以在开办费中列支
  • react组件如何设置dom
  • 巴芬岛旅游
  • chatGPT背后的真正逻辑
  • 2021劳务分包专票开几个点
  • 银行存款也有窍门
  • php+jQuery+Ajax简单实现页面异步刷新
  • 报名附件怎么上传
  • 金税盘报送汇总在哪
  • 增值税买一送一处理方法
  • 普通增值税发票会计科目如何写?
  • mongodb如何查询数据
  • mysql数据库sid
  • 公司购烟酒怎么入账
  • 计提费用收到发票怎么做
  • 违约金 专票
  • 预付房租摊销
  • 评估价与成交价差距叫做什么
  • 转移固定资产是指什么
  • 以产品偿还债务怎么算
  • 红冲发票如何做账
  • 发票免税怎么做账
  • 股份有限公司股东人数
  • 更正会计凭证摘要怎么写?
  • 亏损弥补的新旧不同
  • 机票抵扣怎么填申报表
  • 餐饮招待怎么入账
  • kms激活的弊端
  • linux中git命令
  • 2021图解
  • config是什么文件夹
  • win7系统按Ctrl+Shift不能切换输入法的图文教程
  • 防止 避免
  • linux远程桌面连接工具
  • win70
  • cocos2dx 3.3 tilemap 缩放滑动并且准确点击对象
  • 基于javascript的毕业设计
  • nodejs命令行参数解析
  • JavaScript 浏览器对象
  • Unable to execute dex: Multiple dex files define 解决方法
  • js如何使用
  • unity mobile3d
  • jQuery实现表格文本框淡入更改值后淡出效果
  • javascript主要学什么
  • 安卓 存储权限 访问的地方是哪里
  • 湖北省国家税务总局
  • 砂石需要缴纳资源税吗
  • 村财审计报告怎么写
  • 车票进项税怎么认证
  • 山东地方税务局官网
  • 为什么增值税是销项税减进项税
  • 北京第六税务所电话号码
  • 国家税务总局税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设