位置: IT常识 - 正文

Pinia(二)了解和使用Store

发布时间:2024-01-12
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网页制作)

  • 淘宝怎么看一共花了多少钱了(淘宝怎么看一共花了多少钱)(淘宝怎么看一共消费)

    淘宝怎么看一共花了多少钱了(淘宝怎么看一共花了多少钱)(淘宝怎么看一共消费)

  • 苹果13promax怎么安装软件(苹果13promax怎么强制重启)

    苹果13promax怎么安装软件(苹果13promax怎么强制重启)

  • 电脑版WPS怎么分页(电脑版wps怎么分享)

    电脑版WPS怎么分页(电脑版wps怎么分享)

  • 打开qq界面是黑色的怎么办(qq界面黑屏怎么回事)

    打开qq界面是黑色的怎么办(qq界面黑屏怎么回事)

  • 苹果手机淘宝返回不了(苹果手机淘宝返回小箭头反回不了是怎么回事)

    苹果手机淘宝返回不了(苹果手机淘宝返回小箭头反回不了是怎么回事)

  • 华为手机怎么设置时间和日期(华为手机怎么设置陌生号码打不进来)

    华为手机怎么设置时间和日期(华为手机怎么设置陌生号码打不进来)

  • 苹果11看抖音字幕显示不全(苹果11看抖音字体大小)

    苹果11看抖音字幕显示不全(苹果11看抖音字体大小)

  • tdlte流量费怎么产生的(traffic流量)

    tdlte流量费怎么产生的(traffic流量)

  • 表格打字不显示(表格打字不显示怎么办)

    表格打字不显示(表格打字不显示怎么办)

  • 华为nova7pro有无线充电吗(华为nova7pro有无红外功能)

    华为nova7pro有无线充电吗(华为nova7pro有无红外功能)

  • 抖音名字改不了怎么回事(抖音名字改不了一直说今日已达上限)

    抖音名字改不了怎么回事(抖音名字改不了一直说今日已达上限)

  • 苹果用充电宝充电伤电池吗(苹果用充电宝充电好吗)

    苹果用充电宝充电伤电池吗(苹果用充电宝充电好吗)

  • 快手官方限流是什么意思(快手官方限流一般多久)

    快手官方限流是什么意思(快手官方限流一般多久)

  • 华为nova6多重(华为nova6重量多少)

    华为nova6多重(华为nova6重量多少)

  • 支付宝怎么解除拉黑好友(支付宝怎么解除实名认证)

    支付宝怎么解除拉黑好友(支付宝怎么解除实名认证)

  • 抖音直播必须是认证本人吗(抖音直播必须是本人吗)

    抖音直播必须是认证本人吗(抖音直播必须是本人吗)

  • ppt文件的扩展名是啥(ppt文件的扩展名有哪些)

    ppt文件的扩展名是啥(ppt文件的扩展名有哪些)

  • wdr5620是不是千兆(wdr5620和wdr5620千兆版区别)

    wdr5620是不是千兆(wdr5620和wdr5620千兆版区别)

  • 注册微信时的默认头像(注册微信时的默认头像 原图)

    注册微信时的默认头像(注册微信时的默认头像 原图)

  • 在计算机领域中媒体系指(在计算机领域中,鼠标器是一种)

    在计算机领域中媒体系指(在计算机领域中,鼠标器是一种)

  • 定位为什么显示离线(定位为什么显示黑色)

    定位为什么显示离线(定位为什么显示黑色)

  • 扣扣屏蔽对方知道吗(扣扣屏蔽对方会有提示)

    扣扣屏蔽对方知道吗(扣扣屏蔽对方会有提示)

  • 拼多多不退款怎样投诉(拼多多不退款怎么申请客服强制介入)

    拼多多不退款怎样投诉(拼多多不退款怎么申请客服强制介入)

  • 【微信小程序】使用页面跳转并携带多个特定参数(微信小程序开发平台)

    【微信小程序】使用页面跳转并携带多个特定参数(微信小程序开发平台)

  • 解决云服务器远程登录SSH显示-bash-4.2问题和解决方法(云服务器远程端口)

    解决云服务器远程登录SSH显示-bash-4.2问题和解决方法(云服务器远程端口)

  • 详解Promise使用(promise基本使用)

    详解Promise使用(promise基本使用)

  • 摊薄净资产收益率是什么意思
  • 未到账的银行存款怎么取
  • 预收账款怎么做财务分析报告
  • 水电气费用属于固定成本
  • 科目余额表解析
  • 微信支付属于现金嘛
  • 新公司季初资产总额和季末资产总额怎么填
  • 发票金额多开了有事吗
  • 社保费公司部分怎么算
  • 小规模纳税人如何转一般纳税人
  • 员工报销增值税
  • 银行属于个人吗
  • 出口退税预审在申报系统怎么做
  • 小规模开票是含税的吗
  • 发票已勾选未确认
  • 技术服务费怎么开票
  • 上缴国家利润应计入什么会计分录?
  • 纳税人哪些支出不用交税
  • 不予抵扣的进项税额是什么意思
  • php精确的统计在哪里找
  • php预定义常量要使用define函数进行定义
  • 上一年度的费用能入今年账吗
  • 差额征税的项目有哪些
  • 在建工程进项税可以抵扣吗
  • msstat.exe - msstat是什么进程 有什么用
  • 一只猫在花园里英语
  • 农场新区
  • 注销小规模公司需要什么材料
  • tr命令详解
  • 单位购买电水壶会计入账
  • 公司进项不够怎么开发票
  • 织梦模板安装完整教程
  • 费用科目分别有什么
  • 投资款印花税税源采集表税目
  • 自然人独资和个人独资是一样的吗
  • 企业什么情况
  • 福利费专票必须抵扣再转出吗
  • 进仓费开票是几个点
  • 企业所得税免税和减半征收
  • 坏账准备计提方法一经确定不得随意变更这种做法体现了
  • 结构性存款是什么意思是理财
  • 事业单位哪些收入要上交国库
  • 计提福利费是什么意思
  • 出差补贴算工资吗
  • 应付账款转入营业外收入的证明
  • 审计真实性认定
  • 作废的发票税额扣税了怎么办
  • sql中的where in
  • mysql日期字段
  • xp系统如何安装
  • win10开机出现onekey ghost
  • hyper-v怎么样
  • mac系统怎么删除用户
  • centos32
  • win1020h2版本要更新多久
  • win8打开ie
  • javascript入门教程
  • python socket操作
  • opengl示例
  • js必须掌握的
  • jquery刷新局部页面
  • 安卓笔记软件squid使用教程
  • html td 合并
  • cocos2dx减少内存开销
  • opengl中点画圆算法
  • 实现每个星期的计划英语
  • 详解如何使用pcem安装windows 98 csdn
  • jquery图片效果
  • jquery 列表控件
  • linux系统搜索文件内容
  • 基于javascript的毕业设计
  • 初步了解的英文
  • JavaScript性能优化
  • 车辆缴纳购置税多少钱
  • 知道纳税人识别号怎么转账
  • 2021年四川医保缴费截止时间
  • e福州怎么帮家人登记
  • 加强党的作风建设是目前全党的中心
  • 小规模纳税人的增值税怎么计算
  • 税务主管机关有哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号