vue3 中使用pinia 数据状态管理(在Taro 京东移动端框架中的使用)

1.pinia 介绍

pinia 是 Vue 的存储库,它允许您跨组件/页面共享状态。就是和vuex一样的实现数据共享。
依据Pinia官方文档,Pinia是2019年由vue.js官方成员重新设计的新一代状态管理器,更替Vuex4成为Vuex5。
Pinia 目前也已经是 vue 官方正式的状态库。适用于 vue2 和 vue3。可以简单的理解成 Pinia 就是 Vuex5。也就是说, Vue3 项目,建议使用Pinia。

Pinia 的优点

  1. pinia 符合直觉,易于学习。
  2. pinia 是轻量级状态管理工具,大小只有1KB.
  3. pinia 模块化设计,方便拆分。
  4. pinia 没有 mutations,直接在 actions 中操作 state,通过 this.xxx 访问响应的状态,尽管可 以直接操作 state,但是还是推荐在 actions 中操作,保证状态不被意外的改变。
  5. store 的 action 被调度为常规的函数调用,而不是使用 dispatch 方法或者是 MapAction 辅助函数,这是在 Vuex 中很常见的。
  6. 支持多个 store。
  7. 支持 Vue devtools、SSR、webpack 代码拆分。
2.pinia基本使用

①.安装pinia

    

npm i pinia

 

②. 全局app.ts 引入

import { createApp } from "vue";
import { createPinia } from "pinia";
import Taro from "@tarojs/taro";

const App = createApp({
  mounted() {},
  onLaunch(option) {
  },
  onShow() {},
  onHide() {},
});
App.use(createPinia());
export default App;

此时我这个是新创建得的一个 createApp.ts文件 在app.ts中引入的

③.创建store文件 

index.ts

import { createPinia } from "pinia";
const store = createPinia();

export { store };

export * from "./modules/user";
export * from "./modules/tabbar";
export * from "./modules/location";

export default store;

modules 文件夹中都是 相关的store 模块

④.使用字段说明

拿user.ts store模块来说

import { defineStore } from "pinia";
import { setStorage, getStorage, clearStorage } from "../../utils/tools";
import { store } from "../index";

export const useUserStore = defineStore("user", {
  state: () => ({
    Token: getStorage("TOKEN") || null,
    Userinfo: getStorage("userInfo") || null,
    fansInfo: getStorage("fansInfo") || {},
    fansId: getStorage("fansId") || null,
    buyer_nick: getStorage("buyer_nick") || null,
    xyToken: getStorage("xyToken") || null,
  }),
  getters: {},
  actions: {
    setToken(token: string) {
      this.Token = token;
      setStorage("TOKEN", token);
    },
    setFansId(id: string) {
      this.fansId = id;
      setStorage("fansId", id);
    },
    setFansInfo(info: object) {
      this.fansInfo = info;
      setStorage("fansInfo", info);
    },
    setUserinfo(userinfo: Object) {
      this.Userinfo = userinfo;
      setStorage("userInfo", userinfo);
    },
    loggout() {
      this.Token = "";
      this.Userinfo = "";
      clearStorage("TOKEN");
      clearStorage("userInfo");
    },
    async getUserinfo() {},
  },
});

export function getUserStore() {
  return useUserStore(store);
}

都是一些state 数据状态 和action 操作函数

⑤.页面中使用

import { storeToRefs } from 'pinia'; //引入插件方法
import { useUserStore } from '../../store/index' //引入模块
const userStore = useUserStore() //模块实例化

const { fansId, fansInfo } = storeToRefs(userStore) //state 状态

//注意 此时的状态是ref 参数 需要.value


状态中的函数使用: 
userStore.setUserinfo(obj)  //使用user.ts中的action 函数




3.总结

我感觉比vuex 好使 自从使用了pinia 以后 没有看过vuex 了 我现在都是写vue3  而且我上面说的这种 并不是只有Taro框架中能使用 这个很多框架的使用方式应该都是一样的  如果我上述的代码有问题 欢迎大家指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/389340.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读 - Non-Local Spatial Propagation Network for Depth Completion

文章目录 1 概述2 模型说明2.1 局部SPN2.2 非局部SPN2.3 结合置信度的亲和力学习2.3.1 传统正则化2.3.2 置信度引导的affinity正则化 3 效果3.1 NYU Depth V23.2 KITTI Depth Completion 参考资料 1 概述 本文提出了一种非局部的空间传播网络用于深度图补全,简称为…

手把手教你免费搭建自己的红包封面商城​

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

【Linux】调试工具gdb:初识

前言 今天来记录并学习一下gdb的使用 背景 程序的发布方式有两种,debug模式和release模式Linux gcc/g出来的二进制程序,默认是release模式要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项 使用 gdb FileName 退出&#x…

爱上JVM——常见问题:JVM组成(一)

1 JVM组成 1.1 JVM由那些部分组成,运行流程是什么? 难易程度:☆☆☆ 出现频率:☆☆☆☆ JVM是什么 Java Virtual Machine Java程序的运行环境(java二进制字节码的运行环境) 好处: 一次编写&…

qt-C++笔记之打印所有发生的事件

qt-C笔记之打印所有发生的事件 code review! 文章目录 qt-C笔记之打印所有发生的事件1.ChatGPT问答使用 QApplication 的 notify 方法使用 QObject 的 event 方法 2.使用 QObject 的 event 方法3.使用 QApplication 的 notify 方法 1.ChatGPT问答 在Qt C中,若要打…

相机图像质量研究(22)常见问题总结:CMOS期间对成像的影响--光学串扰

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

C# VS2022+WinForm+Oracle19.3+Excel,根据数据库表定义书生成SQL

目标: 用Excel写数据库的表的定义书,用该工具生成SQL,在客户端执行,把表结构导入数据库,生成真正的表 Github代码下载 目录 0.完成下面开发环境的准备1 操作系统Win11 专业版 21H22 oracle 19.33 Visual Studio Commun…

C语言第二十五弹---字符函数和字符串函数(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 目录 1、字符分类函数 2、字符转换函数 3、strlen的使用和模拟实现 4、strcpy 的模拟实现 5、strcat 的模拟实现 6、strcmp 的模拟实现 7、strncpy 函数的使用 总结…

高效货运 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C 题目描述 老李是货运公司承运人,老李的货车额定载货重量为wt;现有两种货物,货物A单件重量为wa,单件运费利润为pa&#xff0c…

Fluke ADPT 连接器新增对福禄克万用 Fluke 15B Max 的支持

所需设备: 1、Fluke ADPT连接器; 2、Fluke 15B Max; Fluke 15B Max拆机图: 显示界面如下图: 并且可以将波形导出到EXCEL: 福禄克万用表需要自己动手改造!!!

【C++第二阶段-重载-关系运算符函数调用】

你好你好! 以下内容仅为当前认识,可能有不足之处,欢迎讨论! 文章目录 关系运算符-重载-判断相等函数调用运算符重载 关系运算符-重载-判断相等 场景:两个对象,若有年龄和性别的不同,是否可以直…

AI数据中心网络架构需求:400/800G光模块

随着AI技术和相关应用的不断发展,大模型、大数据和AI计算能力在AI发展中的重要性日益凸显。大模型和数据集构成AI研究的软件基础,而AI算力是关键的基础设施。在本文中,我们将探讨AI发展对数据中心网络架构的影响。 Fat-Tree数据中心网络架构…

Spring Boot结合MinIO 实现文件切片极速上传!

本文将介绍如何使用Spring Boot和MinIO实现文件切片极速上传技术,通过将大文件分割成小片段并并行上传,显著提高文件上传速度。 2 文件切片上传简介 文件切片上传是指将大文件分割成小的片段,然后通过多个请求并行上传这些片段,最…

【C++】实现Date类的各种运算符重载

上一篇文章只实现了operator操作符重载&#xff0c;由于运算符较多&#xff0c;该篇文章单独实现剩余所有的运算符重载。继续以Date类为例&#xff0c;实现运算符重载&#xff1a; 1.Date.h #pragma once#include <iostream> #include <assert.h>using namespace …

相机图像质量研究(24)常见问题总结:CMOS期间对成像的影响--摩尔纹

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

【面试】盘点10个高频的前端算法题,你全都会了吗?

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 现在前端的面试中&#xff0c;算法出现的频率越来越高了&#xff0c;大厂更是必考算…

GPIO八种工作模式

目录 一、推挽输出 二、开漏输出 三、复用推挽输出 四、复用开漏输出 五、浮空输入 六、上拉输入 七、下拉输入 八、模拟输入 GPIO八种配置模式&#xff0c;原理和使用场景&#xff0c;硬件原理如下图&#xff1a; 一、推挽输出 1、 原理 当控制栅极为低电平时&#x…

【Visual Studio】使用空格替换制表符

环境 VS版本&#xff1a;VS2013 问题 如何生成空格替换制表符&#xff1f; 步骤 1、菜单 工具->选项&#xff0c;文本编辑器->C/C->制表符&#xff0c;选择【插入空格】。

free pascal:fpwebview 组件通过 JSBridge 调用本机TTS

从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。 先请看 \fpwebview-master\README.md cd \lazarus\projects\fpwebview-master\demo\js_bidir 学习 js_bidir.lpr &#xff0c;编写 js_bind_speak.lpr 如下&#xff0c;通过 JSBridge 调用本…

php基础学习之可变函数(web渗透测试关键字绕过rce于回调函数)

可变函数 看可变函数的知识点之前&#xff0c;蒟蒻博主建议你先去看看php的可变变量&#xff0c;会更加方便理解&#xff0c;在本篇博客中的第五块知识点->php基础学习之变量-CSDN博客 描述 当一个变量所保存的值刚好是一个函数的名字&#xff08;由函数命名规则可知该值必…