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

  • 个人所得税退税操作流程
  • 应交税费课程
  • 债券的利益
  • 企业法人如何网上实名认证
  • 工会筹备金需不需要计提
  • 民间非营利机构加班费记什么科目
  • 信用减值损失在利润表怎么填列
  • 小规模免征增值税额度2022
  • 非营利组织的项目管理流程包括
  • 企业汇算清缴时允许税前扣除的工资是什么
  • 研究开发费用的加计扣除100%
  • 应收银行存款利息怎么算
  • 行政单位专项资金核算方法
  • 分公司的收入
  • 餐饮企业员工
  • 一般纳税人施工费税率是多少
  • 地价计入房产
  • 事业单位 会计
  • 股权转让相关手续
  • win10为什么毛病这么多
  • 建筑公司收到的劳务费怎么做账
  • 电脑运行慢怎么清理c盘
  • nvsvc.exe - nvsvc是什么进程 有什么用
  • PHP:Memcached::addByKey()的用法_Memcached类
  • 路由器登录密码忘了怎么设置
  • 吸收合并会计处理举例
  • 破产资产拍卖
  • 金融债券利息收入免税吗
  • php知识总结
  • 贸易公司的采购
  • 企业所得税征收点
  • 贷款减值准备什么科目
  • php单例模式应用场景
  • php二维数组按某个键值排序
  • 资产为什么等于成本
  • php截取指定字符串
  • 覆盖的盖
  • php常用方法
  • php解析base64数据生成图片的方法
  • 搭建本地yum
  • 苗木可以进项抵扣的么
  • 企业净利润归谁所有
  • dedecms安装
  • 固定资产的主要风险和关键控制点有哪些?
  • sqlserver编程
  • 银行存款日记账是企业的还是银行的
  • 冲销上个月成本的会计分录
  • 代理费属于
  • 金税四期何时上线
  • 对公账户给别人走账
  • 存货跌价准备可以转回吗?
  • 固定资产一次性扣除后第二年账务处理
  • 2018年所得税税收优惠
  • 工会赞助费
  • 公司向个人借款的会计分录怎么做
  • 研发费用凭证附件
  • 资产减值损失和资产处置损益区别
  • 财务大写金额书写样板
  • 企业外购的固定资产应该怎样进行会计核算
  • 企业预付账款是什么意思
  • 收缩后对数据库有影响吗
  • sql server 自增列设置语句
  • sql中的非逻辑
  • win10系统小娜不见了
  • 如何去掉桌面图标的蓝底
  • win7音量图标不能启用
  • win1020th2
  • linux判断程序是否运行
  • win8系统怎么设置无线网连接啊
  • jqueryui
  • node stream(流)有哪些?
  • javascript入门基础
  • jquery技巧
  • 超精准的电压基准芯片
  • 河东区地税局上班时间
  • 南京地税局局长名单
  • 增资注册资本
  • 上海市网上税务局如何登录
  • 江苏盐在什么地方
  • 江苏房产税如何计算公式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设