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框架中能使用 这个很多框架的使用方式应该都是一样的  如果我上述的代码有问题 欢迎大家指正

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单页404源码

<!doctype html> <html> <head> <meta charset"utf-8"> <title>简约 404错误页</title><link rel"shortcut icon" href"./favicon.png"><style> import url("https://fonts.googleapis.co…

QT 信号和槽机制

信号&#xff1a;各种事件 槽&#xff1a; 响应信号的动作 当某个事件发生后&#xff0c;如某个按钮被点击了一下&#xff0c;它就会发出一个被点击的信号&#xff08;signal&#xff09;。 某个对象接收到这个信号之后&#xff0c;就会做一些相关的处理动作&#xff08;称为槽…

Java 基于微信小程序的私家车位共享系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

在VSCode中创建Java项目

在VSCode中创建Java项目 首先&#xff0c;保证安装了Java的JDK. WinR -> 输入cmd -> 输入 java -version -> 然后可以看到安装的JDK版本&#xff0c;如果没安装可以去找教程。 JDK安装参考教程 打开VSCode&#xff0c;打开扩展&#xff08;Ctrl Shift S&#xff…

2024-02-13 Unity 编辑器开发之编辑器拓展4 —— EditorGUIUtility

文章目录 1 EditorGUIUtility 介绍2 加载资源2.1 Eidtor Default Resources2.2 不存在返回 null2.3 不存在则报错2.4 代码示例 3 搜索框查询、对象选中提示3.1 ShowObjectPicker3.2 PingObject3.3 代码示例 4 窗口事件传递、坐标转换4.1 CommandEvent4.2 GUIPoint 和 ScreenPoi…

鸿蒙开发第3篇__大数据量的列表加载性能优化

列表 是最常用到的组件 一 ForEach 渲染控制语法————Foreach Foreach的作用 遍历数组项&#xff0c;并创建相同的布局组件块在组件加载时&#xff0c; 将数组内容数据全部创建对应的组件内容&#xff0c; 渲染到页面上 const swiperImage: Resource[] {$r("app.me…

【EAI 019】Eureka: Human-Level Reward Design via Coding LLM

论文标题&#xff1a;Eureka: Human-Level Reward Design via Coding Large Language Models 论文作者&#xff1a;Yecheng Jason Ma, William Liang, Guanzhi Wang, De-An Huang, Osbert Bastani, Dinesh Jayaraman, Yuke Zhu, Linxi Fan, Anima Anandkumar 作者单位&#xff…

书生·浦语大模型第四课作业

基础作业&#xff1a; 构建数据集&#xff0c;使用 XTuner 微调 InternLM-Chat-7B 模型, 让模型学习到它是你的智能小助手&#xff0c;效果如下图所示&#xff0c;本作业训练出来的模型的输出需要将不要葱姜蒜大佬替换成自己名字或昵称&#xff01; 1.安装 # 如果你是在 Int…

使用 Windows 11/10 上的最佳 PDF 转 Word 转换器释放 PDF 的潜力

毫无疑问&#xff0c;PDF 是最好的文档格式之一&#xff0c;但就像其他格式一样&#xff0c;有时它们确实会带来一些限制。例如&#xff0c;在某些情况下&#xff0c;您可能想要将 PDF 转换为 Word。在这种情况下&#xff0c;您始终可以借助 PDF 到 Word 转换器的帮助。 为了说…

【C语言期末项目-通讯录】-升级可动态申请内存版(手把手详细过程,期末评分A+的项目,答辩辅助神博文,建议三连点赞收藏)

目录 ​编辑 前言&#xff1a; 1.项目功能需求分析 2.文件框架说明 3.程序主框架实现 4.创建联系人结构体类型和通讯录结构体类型 4.1创建通讯录 5.程序功能实现--封装功能函数实现不同功能 5.1通讯录初始化 5.2增加联系人 5.3显示所有联系人的信息 5.4删除指定…

又见彩票事件(含米哈游算法变形题)

又见彩票事件 1月17日&#xff0c;中国体彩最新开奖结果出炉&#xff0c;其中“排列3”和“排列5”均出现罕见的“连5”组合。 体彩“排列3”的开奖号码为“555”&#xff0c;“排列5”的开奖号码为“55555”。 5亿奖池被清空。 开奖后第二天就有同学问我怎么看。 我 ... 我能怎…

python系统学习Day1

section1 python introduction 文中tips只做拓展&#xff0c;可跳过。 PartOne introduction 首先要对于python这门语言有一个宏观的认识&#xff0c;包括特点和应用场景。 特点分析&#xff1a; 优势 提供了完善的基础代码库&#xff0c;许多功能不必从零编写简单优雅 劣势 运…