pinia核心模块----store

2023-11-14

目录

一、概念

二、定义store

1、首先store目录下创建user.ts文件,主要用来存放与user相关的store。

2、页面中使用


一、概念

store简单来说就是数据仓库的意思,我们数据都放在store里面。当然你也可以把它理解为一个公共组件,只不过该公共组件只存放数据,这些数据我们其它所有的组件都能够访问且可以修改。

二、定义store

1、首先store目录下创建user.ts文件,主要用来存放与user相关的store。

// 引入defineStore 方法

 pinia中使用defineStore定义store
 * 第一个参数是应用程序中 store 的唯一 id
 * 第二个参数是是一个对象,store的配置项,比如配置store内的数据,修改数据的方法等等。
 * 返回一个函数使用use+模块名命名

// 其它配置项
   * 定义当前的模块的state
   * state是一个函数,必须有返回值
   * 返回值就是这个模块的状态

// 引入defineStore 方法
import { defineStore } from "pinia";

/**
 * pinia中使用defineStore定义store
 * 第一个参数是应用程序中 store 的唯一 id
 * 第二个参数是是一个对象,store的配置项,比如配置store内的数据,修改数据的方法等等。
 *
 * 返回一个函数使用use+模块名命名
 */
export const useUserStore = defineStore("user", {
  // 其它配置项

  /**
   * 定义当前的模块的state
   * state是一个函数,必须有返回值
   * 返回值就是这个模块的状态
   * @returns
   */
  state() {
    // 返回age为1
    return {
      /**
       * 年龄
       */
      age: 1,
    };
  },
});

2、页面中使用

// 使用userStore 并返回定义模块的实例 

可以直接使用获取属性并修改,并且也会同步重新渲染页面

 * 注意:不能直接从store中解构值
 * 这样会破坏响应式解构,

 * 如果要结构可以使用 storeToRefs 

<template>
  <div>
    <!-- 页面上可以直接使用 -->
    你好,我是pinia--{{ age }}
    <button @click="add">+1</button>
  </div>
</template>
<script setup lang="ts">
// 引入定义的userStore模块
import { storeToRefs } from "pinia";
import { useUserStore } from "./store/user";


// 使用userStore 并返回定义模块的实例
const userStore = useUserStore();


// const add = () => {
//   userStore.age+=1
// };


/**
 * 注意:不能直接从store中解构值
 * 这样会破坏响应式解构,
 */
// 错误
// let { age } = useUserStore();


// 如果要结构可以使用 storeToRefs
let { age } = storeToRefs(userStore);


// 可以直接使用获取属性并修改,并且也会同步重新渲染页面
const add = () => {
  age.value+=1
};
</script>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pinia核心模块----store 的相关文章

  • 按下了哪个提交按钮?

    在这个jsfiddle中 http jsfiddle net littlesandra88 eGRRb http jsfiddle net littlesandra88 eGRRb 我是否提交了自动生成的按钮 每个表行都有一个唯一的 ID
  • 使用 javascript 调用 ViewComponent

    我有一个带有几个视图组件的网页 当我单击这些组件时 我会为其打开一个简单的编辑器 请参见下图 如果我编辑文本并按 Enter 键 我想重新渲染视图组件而不是孔页面 是否可以使用 javascript 调用视图组件来获得此行为 通过更新 您现
  • 邮件附件媒体类型错误 Gmail API

    我正在尝试通过 Javascript 客户端中的 Gmail API 发送带有附加 jpeg 文件的消息 到目前为止我写的代码如下 ajax type POST url https www googleapis com upload gma
  • 最小的 ExtJS 包是什么?

    有谁知道 Ext JS 2 2 所需的最少文件吗 我知道 ExtJS 网站有一个功能 build http extjs com products extjs build ExtJS ext js 的小版本 作为 ext all js 的替代
  • 如何在 Chrome 中实现抓取光标图标?

    我知道可以在 Chrome 中使用抓取光标图标 当然是在 Gmail 中 但我不知道如何在我的代码中实现它 我已经尝试过 在CSS中 body cursor grab body cursor webkit grab body cursor
  • React延迟加载/无限滚动解决方案

    我花了一段时间才弄清楚如何使用优秀的延迟加载图像React Lazyload 组件 https github com jasonslyvia react lazyload 演示在滚动时延迟加载图像 但在测试时我无法获得相同的行为 罪魁祸首是
  • 代码点火器 JSON

    你好 我使用 codeigniter 然后我从控制器中的数据库中回显输出 然后在我的视图文件中执行以下操作 但它没有显示任何内容 S 我的模型文件 function forumList this gt db gt select oversk
  • WebDriver:更改事件未触发

    我有一个使用 KnockoutJS 的应用程序 我正在尝试编写一些测试表单的测试 如果您不了解 KnockoutJS 简单来说 它提供了从我的视图到我的数据模型的绑定 这意味着当我在输入字段中键入值时 我的基础对象会自动使用该输入字段值进行
  • 为什么我的 onclick 事件自动触发

    加载页面时最初显示 Hello World 我希望它仅在单击按钮后显示 我知道我可以通过向按钮添加内联事件侦听器来做到这一点 我可以只用脚本编写所有这些代码吗
  • 如何获取数组中最后 5 个元素(不包括第一个元素)?

    在 JavaScript 数组中 如何获取最后 5 个元素 排除第一个元素 1 55 77 88 would return 55 77 88 添加其他示例 1 55 77 88 99 22 33 44 would return 88 99
  • t /= d 是什么意思? Python 和错误

    t current time b begInnIng value c change In value d duration def easeOutQuad swing function x t b c d alert jQuery easi
  • 有没有办法在 TypeScript 2+ 中全局添加类型定义?

    我有一堆简单的 ts files 不是项目 即独立的 ts 脚本 他们使用一些 Node js 功能 TypeScript 和节点类型定义通过安装 npm install g typescript npm install g types n
  • Rails 4 - 带有 dependent-fields-rails 的条件 JS

    我正在尝试弄清楚如何在我的 Rails 4 应用程序中使用 dependent fields rails gem 我迷路了 我已将 underscore js 包含在我的供应商 javascripts 文件夹中 并更新了我的 applica
  • 如何检查jquery数据表中的每个复选框?

    我有一个第一列带有复选框的表格 我使用 jQuery DataTable 插件显示我的表格 我制作了 2 个链接来选择 取消选择每个复选框 这是选择全部的一个 a href Select all a 和 JavaScript functio
  • CryptoJS 和 Pycrypto 一起工作

    我正在使用 CryptoJS v 2 3 加密 Web 应用程序中的字符串 并且需要在服务器上使用 Python 对其进行解密 因此我使用 PyCrypto 我觉得我错过了一些东西 因为我无法让它工作 这是JS Crypto AES enc
  • Javascript - 如何计算数字的平方?

    使用 JavaScript 函数 function squareIt number return number number 当给定数字 4294967296 时 函数返回 18446744073709552000 每个人都知道真正的答案是
  • Jade(当前称为“Pug”)模板引擎中的循环

    我想使用一个简单的循环 例如for int i 0 i lt 10 i 如何在 Jade 引擎中使用它 我正在使用 Node js 并使用expressjs 框架 例如 for var i 0 i lt 10 i li array i 你可
  • 如何在 JavaScript 中设置/更新 String 对象的值

    我有一个具有一些属性的对象字符串对象 var obj foo new String bar 我在用字符串对象因为我需要在对象上存储额外的子属性 同时仍然能够获取字符串值 obj foo baz baz obj foo gt bar 我觉得问
  • nvd3.js - 无法更改折线图中线条的颜色

    我正在尝试更改 nvd3 折线图不同线条的颜色here http nvd3 org livecode index html codemirrorNav但我无法理解该怎么做 我想将示例中的 2 条线的颜色更改为绿色和青色 我试过 nv add
  • 如何在 ChartJS 中创建自定义图例

    我需要使用 ChartJS 库为我的圆环图创建自定义图例 我已经使用 ChartJS 提供的默认图例创建了甜甜圈 但我需要一些修改 我希望其价值高于汽车名称 另外 我不喜欢粘性图例 我想将其与甜甜圈分开 这样我就可以更改字体 框的样式 例如

随机推荐

  • linux 设置时区

    参考 https www cnblogs com librawhj p 8989755 html
  • 高频JMeter软件测试面试题

    近期 有很多粉丝在催更关于Jmeter的面试题 索性抽空整理了一波 以下是一些高频JMeter面试题 拿走不谢 一 JMeter的工作原理 JMeter就像一群将请求发送到目标服务器的用户一样 它收集来自目标服务器的响应以及其他统计数据 这
  • 《机器学习》(西瓜书)周志华学习思维导图——第六、七章

    本文主要介绍了机器学习中的常用算法支持向量机 SVM 和贝叶斯分类器 第六章 支持向量机 支持向量机是一种常用的分类模型 分类学习的基本思想就是基于训练集在样本空间找到一个划分超平面 将不同类别的样本分开 学习的目标是为了找到具有最大间隔的
  • 解决vue 微信JSSDK注入权限时出现“invalid signature”(ios)

    请求后台将当前页面的url传给后台 后台返回配置信息后使用wx config注入权限 安卓无任何问题 但是iOS一直无法无法正常运行 url里也没带有 号 打开debug查看提示的invalid signature 并且报错的url不是我当
  • SetThreadName & GetThreadName

    ypedef struct tagTHREADNAME INFO DWORD dwType must be 0x1000 LPCSTR szName pointer to name in user addr space DWORD dwTh
  • 2023 年博客之星的入围规则

    最近的活动 博客之星6月城市领跑比赛 CSDN 博客之星 是一年一度的博主评选 是平台对博主一年贡献的答谢 往年的博客之星均在年末进行 2023年我们进一步优化了博客之星的评选规则 让更多优质的博主更有机会上榜 也无需担心错过报名时间 以下
  • java获取汇率 美元-人民币

    import java io BufferedReader import java io DataOutputStream import java io IOException import java io InputStream impo
  • 第十三届“华中杯”大学生数学建模挑战赛题目 A 题 马赛克瓷砖选色问题

    第十三届 华中杯 大学生数学建模挑战赛题目 A 题 马赛克瓷砖选色问题 要求1 2 3用python完成 文章目录 第十三届 华中杯 大学生数学建模挑战赛题目 A 题 马赛克瓷砖选色问题 要求1 2 3用python完成 前言 一 算法构思
  • LibEvent中文帮助文档

    http blog csdn net zhouyongku article details 53431597 libevent源码分析 http blog csdn net yusiguyuan article details 182675
  • Rinetd 端口转发

    文章目录 端口转发工具 Rinetd 安装 利用 Rinetd 实现Service 负载均衡 端口转发工具 Rinetd Rinetd 重定向传输协议控制工具 可将源ip端口 数据转发至目标 ip端口 在 k8s 中用于将service服务
  • jwt实现token鉴权(nodejs koa)

    为什么需要token 在后台管理系统中 我们通常使用cookie session的方式用于鉴权 如何通过cookie session鉴权 nodejs koa 但这种方式存在着以下问题 比如cookie的容量太小 浏览器端和app端发送ht
  • 动态代理的两种方式以及区别

    JDK动态代理 利用反射机制生成一个实现代理接口的匿名类 在调用具体方法前调用InvokeHandler来处理 CGlib动态代理 利用ASM 开源的Java字节码编辑库 操作字节码 开源包 将代理对象类的class文件加载进来 通过修改其
  • Java-模板注释

    前言 好的代码规范是一个程序员的基本修炼 好的代码注释更能体现一个程序员的思维逻辑 虽然代码是用来给机器运行的 我们只要能写出能让编译器运行的代码就行了 但是如果没有好的编码规范 到项目后期 加入开发的人员逐渐增多时 每个人的编码风格都不一
  • navicat连接oracle进行数据的迁移到mysql以及遇到的问题总结

    打开navicat客户端连接oracle数据服务需要先配置oci dll文件 配置的过程为 打开navicat界面点击 工具 gt 选择 gt OCI 导入oci dll文件 注意 选择instanceclient需要跟oracle数据库的
  • python用bbp公式求圆周率_Python学习笔记

    本文为中国大学MOOC Python语言程序设计 课程学习笔记 课程主讲 嵩天老师 练习平台 Python123 参考教材 Python语言程序设计基础 一 使用公式的方法求解圆周率的值 pi 0 N 1000 for k in range
  • Ubuntu Kylin 20_10 在VMware Workstation Pro上安装

    Ubuntu Kylin 20 10 在VMware Workstation Pro上安装 文章目录 Ubuntu Kylin 20 10 在VMware Workstation Pro上安装 准备工作 在VMVMware Workstat
  • vue-cropper实战使用

    vue cropper 一个优雅的图片裁剪插件 查看演示 Demo README english 更新日志 一 安装使用 1 安装 npm 安装 npm install vue cropper 2 引入 Vue Cropper Vue2 组
  • C++打印类名+函数名的方法

    C 打印类名 函数名的方法 打log的时候经常需要将输出log时所在的类名 函数名写清楚 但是自己敲函数名和类名比较麻烦 复制粘贴的时候也会忘记修改而出错 下面介绍下如何在G GCC编译器下获得函数名和类名 如果只想获得函数名可以用C99的
  • 使用Git-bash将本地项目传到Github

    近几天复习了JavaWeb的一些基础 做了一个简单的管理系统 想放在Github上留个底 但只会用IDEA直接pull 就想着用本地的Gitbash直接pull 花了些时间能好了 现在总结下流程 1 首先在本地目录创建一个文件夹 作为版本库
  • pinia核心模块----store

    目录 一 概念 二 定义store 1 首先store目录下创建user ts文件 主要用来存放与user相关的store 2 页面中使用 一 概念 store简单来说就是数据仓库的意思 我们数据都放在store里面 当然你也可以把它理解为