【pinia】新一代更好用的状态管理器Pinia

这篇具有很好参考价值的文章主要介绍了【pinia】新一代更好用的状态管理器Pinia。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 

一,Pinia状态管理库

1.Pinia介绍

2.Pinia的核心特性

3.核心概念

4.Pinia vs Vuex

5.Pinia & Vuex的不同

6.Pinia名字

二,Pinia基本使用

1.安装Pinia

2.配置main.ts文件

3.创建store/index.ts文件

4.使用数据

三,状态更新和Actions

四,Pinia和VueDevtools


 

一,Pinia状态管理库

【pinia】新一代更好用的状态管理器Pinia

1.Pinia介绍

Pinia的设计主要是服务于Composite API(组合式API)的,相当于下一带的Vuex。

因为Vuex主要是为了vue2种的选项是API服务的所以,并不适用于Vue3。当Vue3伴随着组合式API来到时,Pinia的诞生也就成为了必然,一个全新的用于 Vue的状态管理库Pinia。

在Pinia种剔除了mutations,只剩了state,actions,getters,这就省去了很多麻烦

【pinia】新一代更好用的状态管理器Pinia

2.Pinia的核心特性

1.Vue2&Vue3都支持

两者的API都相同,只有初始化安装和SSR配置不同

2.都支持VueDevTools

跟踪actions,mutations的时间线

可以在使用容器的组件种观察到容器的本身

支持time-travel

Vue2中不能同时使用Pinia,Vuex

3.热模块更新

修改容器时不需要重新加载

在热更新的时候保持任何现有的状态

4.支持

支持Pinia插件的使用

更好的支持TS

支持服务端渲染

3.核心概念

Pinia Vuex
State State
Getters Getters
Actions Actions
Mutations Mutations

组件,每个人都可以读取和写入。它有三个核心概念Store(如 Pinia) 是一个保存状态和业务逻辑的实体,它不绑定到您的组件树。换句话说,它承载全局 state。它有点像一个始终存在的

4.Pinia vs Vuex

Pinia 试图尽可能接近 Vuex 的理念。它旨在测试 Vuex 下一次选代的提案,并且取得了成功,因为我们目前有一个针对 Vuex 5 的开放式RFC,其API与Pinia 使用的API非常相似。请注意,Pini 的作者(Eduardo)是 Vueis 核心团队的一员,并积极参与 Router 和 Vuex等API 的设计。我个人对这个项目的意图是重新设计使用全局 Store 的体验,同时保持 Vue 平易近人的哲学,我让 Pania 的 API 与Vuex 一样接近,因为它不断向前发展,使人们可以轻松地迁移到 Vuex,甚至在未来融合这两个项目(在 Vuex 下)。

从上面我们可以得到凉哥信息,Pinia可能会于Vuex融合汇总,另一个信息是,Pinia可能会重新设计走自己的发展道路

5.Pinia & Vuex的不同

1.没有 mutations。mutations 被认为是非常冗长的。最初带来了 devtools 集成,但这不再是问题 2.不再有模块的嵌套结构。您仍然可以通过在另一个 store 中导入和使用 store 来隐式嵌套 store,Pinia 通过设计提供扁平结构,同时仍然支持 store 之间的交叉组合方式。您甚至可以拥有 store 的循环依赖关系

3.更好typescript 支持。无需创建自定义的复杂包装器来支持 Typecript,所有内容都是类型化的,并且 API 的设计方式尽可能地利用 TS 类型推断。

4.不再需要注入、导入函数、调用它们,享受自动补全!

5.无需动态添加stores,默认情况下它们都是动态的,您甚至不会注意到。请注意,您仍然可以随时手动使用 store 来注册它,但因为它是自动的,所以您无需担心。

6.没有命名空间模块。鉴于 store 的扁平架构,"命名空间”store 是其定义方式所固有的,您可以说所有 stores 都是命名空间的。

6.Pinia名字

【pinia】新一代更好用的状态管理器Pinia

Pinia(发音/peenya/为英语)是最接近pina(西班牙语中的pineapple) 的词,它是一个有效的包名。渡萝实际上是一组独立的花朵,它们结合在一起形成多种水果。与 stores 类似,每家 store 都是独立诞生的,但最终都联系在一起。它也是一种原产于南美洲的美味热 带水果。

二,Pinia基本使用

【pinia】新一代更好用的状态管理器Pinia

1.安装Pinia

yarn add pinia
或者使用 npm
npm install pinia

 【pinia】新一代更好用的状态管理器Pinia

2.配置main.ts文件

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
// 引入pinia
import {createPinia} from 'pinia'
// 创建实例
const pinia = createPinia()
const app =  createApp(App)
// 挂载到vue实例
app.use(pinia)
app.mount('#app')

3.创建store/index.ts文件

import {defineStore} from 'pinia'
// 定义并到处容器
export const useMainStore = defineStore('main',{
    state:()=>{
        return {name:'山鱼',age:12,issex:false}
    },
    getters:{},
    actions:{},
})

4.使用数据

这里直接解构这个数据,其实他并不是响应式的,所以我们要使用到pinia中的一个api(storeToRefs),使用storeToRefs解构出来的数据就是响应式的了,也可以动态的展现在页面上了。

<template>
  <div>
    姓名:{{ name }}
    年龄:{{ age }}
    <p v-if="issex">性别:🚹</p>
    <p v-else>性别:🚺</p>
    <button @click="btnHandle1">age+1</button>
    <button @click="btnHandle2" >姓名+~</button>
    <button @click="btnHandle3">更换性别</button>
  </div>
</template>
​
<script lang="ts" setup>
import { storeToRefs } from 'pinia';
import { useMainStore } from '../store/index'
const mainStore = useMainStore()
// 将数据解构()但是当前的数据并不是响应式的
// const { name, age, sex } = mainStore
​
// 我们使用storeToRefs这个API来解决响应式问题
const {name,age,issex} = storeToRefs(mainStore)
function btnHandle1(){
mainStore.age++
}
function btnHandle2(){
mainStore.name+='~'
}
function btnHandle3(){
  if(mainStore.issex===true){
    mainStore.issex = false
  }else{
    mainStore.issex = true
  }
​
}
</script>

【pinia】新一代更好用的状态管理器Pinia

三,状态更新和Actions

export const useMainStore = defineStore('main',{
    state:()=>{
        return {name:'山鱼',age:12,issex:false,list:[1,2,3,4]}
    },
    // 类似于计算属性,具有缓存功能
    getters:{
        // add10(state){
        //     console.log('add10被调用了');
            
        //     return state.age+100
        // }
        // 如果要在getters里面使用this,则需要手动推出返回值的类型
        add10():number{
            console.log('add10被调用了');
            return this.age+100
        }
    },
    // 类似于methods,主打业务逻辑,修改state状态
    actions:{
        chanegstate(num:number){
            this.name = '王多鱼',
            // this.age = 22
            this.age += num
        }
    },
})

组件中使用getters中的add10,使用了三次,但是他只调用了一次,当数据修改的时候,再次使用add10且具有数据缓存功能

        <p>{{ mainStore1.add10 }}</p>
        <p>{{ mainStore1.add10 }}</p>
        <p>{{ mainStore1.add10 }}</p>

四,Pinia和VueDevtools

【pinia】新一代更好用的状态管理器Pinia

查看pinia管理的数据

也可以直接在组件中查看,调试工具直接将pinia管理的数据映射到了组件上了

【pinia】新一代更好用的状态管理器Pinia文章来源地址https://www.toymoban.com/news/detail-427199.html

到了这里,关于【pinia】新一代更好用的状态管理器Pinia的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 信息系统项目管理师025:区块链(2信息技术发展—2.2新一代信息技术及应用—2.2.4区块链)

      “区块链”概念于2008年在《比特币:一种点对点电子现金系统》中被首次提出,并在比特币系统的数据加密货币体系中成功应用,已成为政府、组织和学者等重点关注和研究的热点。区块链技术具有多中心化存储、隐私保护、防篡改等特点,提供了开放、分散和容错的事

    2024年03月19日
    浏览(53)
  • 信息系统项目管理师0027:云计算(2信息技术发展—2.2新一代信息技术及应用—2.2.2云计算)

    点击查看专栏目录   云计算(Cloud Computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后通过由多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。在云计算早期,就是简单的分布式计算,进行任务

    2024年04月09日
    浏览(54)
  • 1.5 新一代信息技术

    战略性新兴产业是以重大技术突破和重大发展需求为基础,对经济社会全局和长远发展具有重大引领带动作用,知识技术密集、物质资源消耗少、成长潜力大、综合效益好的产业。 依据《国务院关于加快培育和发展战略性新兴产业的决定》(国发(2010) 32号),七个战略性新兴产

    2023年04月08日
    浏览(59)
  • 云计算:新一代的技术革命

    云计算,作为21世纪的一项重要技术革命,已在全球范围内引发了深远的影响。它改变了我们存储和处理数据的方式,使得企业无需再建设和维护昂贵的本地服务器和数据中心。本文将深入探讨云计算的基本概念,类型,主要优点,以及它在未来可能的发展趋势。 云计算的基

    2024年02月12日
    浏览(49)
  • No.14新一代信息技术

    新一代信息技术产业包括:加快建设宽带、泛在、融合、安全的信息忘了基础设施,推动新一代移动通信、下一代互联网核心设备和智能终端的研发及产业化,加快推进三网融合,促进物联网、云计算的研发和示范应用。 大数据、云计算、互联网+、物联网、智慧城市等是新

    2024年02月09日
    浏览(44)
  • 新一代硬件安全:第一章-简介

    Chapter 1 Introduction 1.1 Fundamentals of Hardware Security In our modern age of omnipresent and highly interconnected information technology, cybersecurity becomes ever more challenged. For example, with the rise of the Internet of Things (IoT), most such equipment is connected to the internet in some way, often inscrutable to the regular customers. This f

    2024年02月12日
    浏览(53)
  • 新一代通信协议 - Socket.D

    一、简介 Socket.D 是一种二进制字节流传输协议,位于 OSI 模型中的5~6层,底层可以依赖 TCP、UDP、KCP、WebSocket 等传输层协议。由 Noear 开发。支持异步流处理。其开发背后的动机是用开销更少的协议取代超文本传输协议(HTTP),HTTP 协议对于许多任务(如微服务通信)来说效率低下。

    2024年01月20日
    浏览(58)
  • 字节跳动新一代云原生消息队列实践

    作者:火山引擎云原生计算研发工程师|雷丽媛 上文我们了解了在字节跳动内部业务快速增长的推动下,经典消息队列 Kafka 的劣势开始逐渐暴露,在弹性、规模、成本及运维方面都无法满足业务需求。因此字节消息队列团队研发了计算存储分离的 云原生 消息引擎 BMQ ,在极

    2024年02月20日
    浏览(64)
  • Flink CDC 新一代数据集成框架

    前言: 主要讲解了技术原理,入门与生产实践,主要功能:全增量一体化数据集成、实时数据入库入仓、最详细的教程。Flink CDC 是Apache Flink的一个重要组件,主要使用了CDC技术从各种数据库中获取变更流并接入到Flink中,Apache Flink作为一款非常优秀的流处理引擎,其SQL API又

    2024年02月13日
    浏览(59)
  • 新一代自动化测试神器Playwright

    转载请注明出处❤️ 作者:测试蔡坨坨 原文链接:caituotuo.top/4bedb73c.html 你好,我是测试蔡坨坨。 说到WebUI自动化测试,首当其冲的当属Selenium,在很长的一段时间内,Selenium统治着Web自动化,Selenium其实经历了四个阶段,从2006年发布的Selenium 1.0到最新的Selenium 4.8.3。 2006年,

    2023年04月15日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包