当前位置: 首页 > news >正文

vuex和Pinia

文章目录

  • 1.vuex
    • 1.1 veux概述
    • 1.2 创建仓库
    • 1.3 给仓库提供数据以及使用仓库数据
      • 1.3.1 提供数据
      • 1.3.2 使用数据
  • 2.Pinia
    • 2.1 什么是Pinia
    • 2.2 使用Pinia
    • 2.3 storeToRefs工具函数

1.vuex

1.1 veux概述

(1)vuex是什么:
①vuex 是一个 vue 的 状态管理工具,状态就是数据。
②简单点说:vuex 是一个插件,可以帮我们管理 vue 通用的数据 (多组件共享的数据)
(2)场景:
①某个状态 在 很多个组件中被使用 (个人信息)
② 多个组件 共同维护 一份数据 (购物车)
(3)优势:
①共同维护一份数据,数据集中化管理
②响应式变化
③操作简洁 (vuex提供了一些辅助函数)

1.2 创建仓库

(1)安装vuex(vue2使用的版本是vuex3,vue3使用的是vuex4)

yarn add vuex@3

(2)新建vuex模块文件(一般在src下新建store目录,建立index.js)

// 这里存放的就是vuex相关的核心代码
import Vue from 'vue'
import Vuex from 'vuex'
// 插件安装
Vue.use(Vuex)
// 创建仓库(空仓库)
const store = new Vuex.Store()
// 导出给main.js使用
export default store

(3)在main.js中导入并挂载到Vue实例中

import Vue from 'vue'
import App from './App.vue'
// @就是src目录
import store from '@/store/index'Vue.config.productionTip = falsenew Vue({render: h => h(App),store
}).$mount('#app')

1.3 给仓库提供数据以及使用仓库数据

1.3.1 提供数据

State 提供唯一的公共数据源,所有共享的数据都要统一放到 Store 中的 State 中存储。

import Vue from 'vue'
import Vuex from 'vuex'
// 插件安装
Vue.use(Vuex)
// 创建仓库
const store = new Vuex.Store({// state状态,即数据,类似于vue组件中的data// 区别:// 1.data是组件自己的数据// 2.state是所有组件共享的数据state: {title: '大标题',count: 100}
})
export default store

1.3.2 使用数据

(1)通过 store 直接访问

在这里插入图片描述

(2)通过辅助函数(简化了步骤可以直接访问)
①导入mapState,mapState是辅助函数,帮助我们把store中的数据自动映射到组件的计
②数组方式引入state
③直接使用

在这里插入图片描述

2.Pinia

2.1 什么是Pinia

Pinia 是 Vue 的最新 状态管理工具 ,是 Vuex 的 替代品
(1)提供更加简单的API (去掉了 mutation )
(2)提供符合,组合式风格的API (和 Vue3 新语法统一)
(3)去掉了 modules 的概念,每一个 store 都是一个独立的模块
(4)配合 TypeScript 更加友好,提供可靠的类型推断

2.2 使用Pinia

(1)使用包管理器安装Pinia

yarn add pinia
// 或者使用npm
npm install pinia

(2)安装Pinia

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
const pinia = createPinia() // 创建Pinia实例createApp(App).use(pinia).mount('#app')

(3)使用Pinia
①与Vue的选项式API类似,我们也可以传入一个带有state、actions与getters属性的Option 对象

// 定义store
// 语法:defineStore(仓库的唯一标识,() => { ... })
export const useCounterStore = defineStore('counter', {state: () => ({ count: 0 }),getters: {doubleCount: (state) => state.count * 2,},actions: {increment() {this.count++},},
})
  • state 是 store 的数据 (data)
  • getters 是 store 的计算属性 (computed),
  • actions 则是方法 (methods)。

②也存在另一种定义 store 的可用语法。与 Vue 组合式 API 的 setup 函数 相似,我们可以传入一个函数,该函数定义了一些响应式属性和方法,并且返回一个带有我们想暴露出去的属性和方法的对象。

export const useCounterStore = defineStore('counter', () => {const count = ref(0)const doubleCount = computed(() => count.value * 2)function addCount() {count.value++}return { count, doubleCount, addCount }
})

在 Setup Store 中:

  • ref() 就是 state 属性
  • computed() 就是 getters
  • function() 就是 actions

(4)示例:

在这里插入图片描述

2.3 storeToRefs工具函数

使用storeToRefs函数可以辅助保持数据(state + getter)的响应式解构
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一文读懂网络安全
  • 基于微信小程序的挂号管理系统-小程序端
  • ARM的寄存器组织
  • 代码审计总结
  • 『功能项目』DOTween动态文字【26】
  • 10、Django Admin修改标题
  • 每日一练 | 复杂流分类的应用
  • 完整指南:CNStream流处理多路并发框架适配到NVIDIA Jetson Orin (一) 依赖库编译、第三方库编译安装
  • c++命令模式
  • 【如何用远程连接到ubuntu服务器上的redis】
  • linux(ubuntu)安装QT-ros插件
  • 开源还是封闭?人工智能的两难选择
  • 软件渗透测试流程和方法简析,专业软件测评机构推荐
  • ubuntu20.04 colmap安装
  • 【网络安全】服务基础第一阶段——第七节:Windows系统管理基础---- Web与FTP服务器
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Android组件 - 收藏集 - 掘金
  • Apache Zeppelin在Apache Trafodion上的可视化
  • ES6简单总结(搭配简单的讲解和小案例)
  • HTTP那些事
  • JavaScript异步流程控制的前世今生
  • js 实现textarea输入字数提示
  • Linux链接文件
  • Mysql5.6主从复制
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • 产品三维模型在线预览
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 基于Android乐音识别(2)
  • 使用common-codec进行md5加密
  • 找一份好的前端工作,起点很重要
  • gunicorn工作原理
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​2020 年大前端技术趋势解读
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # Java NIO(一)FileChannel
  • #1014 : Trie树
  • #define用法
  • #每日一题合集#牛客JZ23-JZ33
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (C#)获取字符编码的类
  • (C#)一个最简单的链表类
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (论文阅读30/100)Convolutional Pose Machines
  • (三)elasticsearch 源码之启动流程分析
  • (三)SvelteKit教程:layout 文件
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)程序员疫苗:代码注入
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .net core 管理用户机密
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net FrameWork简介,数组,枚举