Table des matières
Nouvel outil de gestion d'état Vue3 : Pinia
Maison interface Web Voir.js Partagez le nouvel outil de gestion d'état de Vue3 : Pinia

Partagez le nouvel outil de gestion d'état de Vue3 : Pinia

Dec 16, 2021 am 10:42 AM
vue.js vuex 前端 状态管理

Cet article partagera avec vous le nouvel outil de gestion d'état Vue3 : Pinia Parlons de l'installation et de l'utilisation de l'outil Pinia. J'espère qu'il sera utile à tout le monde.

Partagez le nouvel outil de gestion d'état de Vue3 : Pinia

Nouvel outil de gestion d'état Vue3 : Pinia

Vue3 est sorti depuis un certain temps. Il adopte un nouveau système réactif et construit un nouvel ensemble d'API de composition. L'écosystème environnant de Vue intensifie ses efforts pour s'adapter à ce nouveau système, et la bibliothèque officielle de gestion de l'État Vuex s'adapte également. Pour cette raison, le responsable a présenté une nouvelle proposition pour Vuex 5. [Recommandations associées : "tutoriel vue.js"]Composition API。Vue 的周边生态都在加紧适配这套新的系统,官方的状态管理库 Vuex 也在适配中,为此官方提出了一个 Vuex 5 的全新提案。【相关推荐:《vue.js教程》】

Partagez le nouvel outil de gestion détat de Vue3 : Pinia

  • 支持两种语法创建 Store:Options ApiComposition Api
  • 删除 mutations,只支持 stategettersactions
  • 模块化的设计,能很好支持代码分割;
  • 没有嵌套的模块,只有 Store 的概念;
  • 完整的 TypeScript 支持;

在这个提案下方,有个评论很有意思。简单翻译一下:

Partagez le nouvel outil de gestion détat de Vue3 : Pinia

好巧不巧,Vuex5 的提案,与 Pinia 实现的功能不能说毫无关系,只能说一模一样,今天的文章就来给大家介绍一下这个菠萝。

安装

在现有项目中,用过如下命令进行 Pinia 模块的安装。

# yarn
yarn add pinia@next
# npm
npm i pinia@next
Copier après la connexion

安装完成后,需要在 Vue3 项目的入口文件中,进行导入安装。

// main.js
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'

// 实例化 Vue
const app = createApp(App)
// 安装 Pinia
app.use(createPinia())
// 挂载在真实 DOM
app.mount('#app')
Copier après la connexion

上手

要使用 Pinia 的话,只需要定义一个 store,然后在用到该数据的地方进行导入。

定义 Store

import { defineStore } from "pinia"

// 对外部暴露一个 use 方法,该方法会导出我们定义的 state
const useCounterStore = defineStore({
  // 每个 store 的 id 必须唯一
  id: 'counter',
  // state 表示数据源
  state: () => ({
    count: 0
  }),
  // getters 类似于 computed,可对 state 的值进行二次计算
  getters: {
    double () {
        // getter 中的 this 指向 state
        return this.count * 2
      },
      // 如果使用箭头函数会导致 this 指向有问题
      // 可以在函数的第一个参数中拿到 state
    double: (state) => {
        return state.count * 2
      }
  },
  // actions 用来修改 state
  actions: {
    increment() {
      // action 中的 this 指向 state
      this.count++
    },
  }
})

export default useCounterStore
Copier après la connexion

除了使用上述类似 vuex 的方式来构建 state,还可以使用 function 的形式来创建 store,有点类似于 Vue3 中的 setup()

import { ref, computed } from "vue"
import { defineStore } from "pinia"

// 对外部暴露一个 use 方法,该方法会导出我们定义的 state
const useCounterStore = defineStore('counter', function () {
  const count = ref(0)
  const double = computed(() => count.value * 2)
  function increment() {
    count.value++
  }
  return {
      count, double, increment
  }
})

export default useCounterStore
Copier après la connexion

使用 Store

前面也介绍过,Pinia 提供了两种方式来使用 store,Options ApiComposition Api 中都完美支持。

Options Api

Options Api 中,可直接使用官方提供的 mapActionsmapState 方法,导出 store 中的 state、getter、action,其用法与 Vuex 基本一致,很容易上手。

import { mapActions, mapState } from 'pinia'
import { useCounterStore } from '../model/counter'

export default {
  name: 'HelloWorld',
  computed: {
    ...mapState(useCounterStore, ['count', 'double'])
  },
  methods: {
    ...mapActions(useCounterStore, ['increment'])
  }
}
Copier après la connexion

Composition Api

Composition Api 中,不管是 state 还是 getter 都需要通过 computed 方法来监听变化,这和 Options Api 中,需要放到 computed 对象中的道理一样。另外, Options Api  中拿到的 state 值是可以直接进行修改操作的,当然还是建议写一个 action 来操作 state 值,方便后期维护。

// Composition Api
import { computed } from 'vue'
import { useCounterStore } from '../stores/counter'
export default {
  name: 'HelloWorld',
  setup() {
    const counter = useCounterStore()
    return {
      // state 和 getter 都需要在使用 computed,这和 Options Api 一样
      count: computed(() => counter.count),
      double: computed(() => counter.double),
      increment: () => { counter.count++ }, // 可以直接修改 state 的值
      increment: counter.increment, // 可以引用 store 中定义的 action
    }
  }
}
Copier après la connexion

类型提示

在 Vuex 中,TypeScript 的类型提示做得不是很好,在进行类型推导时,只能找到它的 state。特别是写代码的过程中,代码提示就很不智能。

Partagez le nouvel outil de gestion détat de Vue3 : Pinia

而 pinia,就能推导出定义的所有 state、getter、action,这样在写代码的时候,就会方便很多。

Partagez le nouvel outil de gestion détat de Vue3 : Pinia

Partagez le nouvel outil de gestion détat de Vue3 : Pinia

主要是 pinia 通过 TypeScript 进行了十分友好的类型定义,感兴趣的可以看看 pinia 的类型定义文件(pinia.d.ts

Partagez le nouvel outil de gestion détat de Vue3 : Pinia

  • Prend en charge deux syntaxes pour la création de Store : Options Api et Composition Api ;
  • Supprimer les mutations, ne prend en charge que state, getters, actions ;
  • La conception modulaire peut bien prendre en charge le fractionnement du code
  • Il n'y a pas de modules imbriqués, seulement le concept Store ; li>
  • Prise en charge complète de TypeScript ;
Partagez le nouvel outil de gestion détat de Vue3 : PiniaSous cette proposition, il y a un commentaire intéressant. Une traduction simple :

Partagez le nouvel outil de gestion détat de Vue3 : PiniaQuelle coïncidence, on ne peut pas dire que la proposition Vuex5 n'a rien à voir avec les fonctions implémentées par Pinia, on peut seulement dire qu'elle est exactement la même. L'article d'aujourd'hui vous présentera cet ananas.

Installation

Dans le projet existant, la commande suivante a été utilisée pour installer le module Pinia. Partagez le nouvel outil de gestion détat de Vue3 : Piniarrreee

Une fois l'installation terminée, vous devez l'importer et l'installer dans le fichier d'entrée du projet Vue3.

rrreeePartagez le nouvel outil de gestion détat de Vue3 : Pinia

Mise en route🎜🎜🎜Pour utiliser Pinia, il vous suffit de définir un magasin puis de l'importer là où les données sont utilisées. 🎜🎜🎜Define Store🎜🎜rrreee🎜En plus d'utiliser la méthode de type vuex ci-dessus pour créer l'état, vous pouvez également utiliser la forme de fonction pour créer un magasin, qui est quelque peu similaire à setup(). 🎜rrreee🎜🎜Utilisation de Store🎜🎜🎜Comme introduit précédemment, Pinia propose deux façons d'utiliser le magasin, <code>Options Api et Composition Api sont parfaitement prises en charge. 🎜🎜🎜Options Api🎜🎜🎜Dans Options Api, vous pouvez directement utiliser les méthodes mapActions et mapState officiellement fournies pour exporter l'état dans le store , getter et action, leur utilisation est fondamentalement la même que celle de Vuex et il est facile de démarrer. 🎜rrreee🎜🎜Composition Api🎜🎜🎜Composition Api, l'état et le getter doivent écouter les changements via la méthode calculée, qui est la même que Options Api code>, il doit être placé dans l'objet calculé pour la même raison. De plus, la valeur d'état obtenue dans Options Api peut être directement modifiée. Bien entendu, il est recommandé d'écrire une action pour faire fonctionner la valeur d'état afin de faciliter la maintenance ultérieure. 🎜rrreee🎜🎜Indices de type🎜🎜🎜Dans Vuex, les indices de type de TypeScript ne sont pas très bons Lorsque vous effectuez une dérivation de type, vous ne pouvez trouver que son état. Surtout lors du processus d'écriture de code, les invites de code sont très peu intelligentes. 🎜🎜Partagez le nouvel outil de gestion détat de Vue3 : Pinia🎜🎜Et pinia, vous pouvez déduire tous les états, getters et actions définis, ce qui sera beaucoup plus pratique lors de l'écriture de code. 🎜🎜Partagez le nouvel outil de gestion détat de Vue3 : Pinia🎜🎜🎜🎜 Principalement pinia passé TypeScript a une définition de type très conviviale Si vous êtes intéressé, vous pouvez jeter un œil au fichier de définition de type de pinia (pinia.d.ts) : 🎜🎜🎜🎜🎜🎜Découpage du code🎜🎜🎜En raison de. l'utilisation de modules En raison de la conception centralisée, tous les magasins peuvent être introduits individuellement, au lieu de monter tous les modules sur un seul magasin via des modules comme vuex. 🎜🎜Supposons que nous créions actuellement un magasin via Vuex. Il y a deux modules sous ce magasin, à savoir le module utilisateur (Utilisateur) et le module produit (Marchandises). Même si la page d'accueil actuelle n'utilise que les informations utilisateur, l'intégralité du Store sera regroupée dans le bloc js de la page d'accueil. 🎜🎜🎜🎜🎜🎜🎜

Si nous utilisons pinia, nous utiliserons defineStore pour définir deux magasins complètement distincts Lorsque les deux pages seront introduites, elles ne s'influenceront pas. Lors du packaging final, le chunk js de la page d'accueil et le chunk js de la page produit seront respectivement packagés dans les magasins correspondants.

Partagez le nouvel outil de gestion détat de Vue3 : Pinia

L'introduction de Pinia prend fin ici. S'il y a de nouveaux projets qui doivent être développés avec Vue3, il est recommandé d'utiliser Pinia sans aucun cerveau. Il est plus concis et ne fait que 1 Ko.

Pour plus de connaissances sur la programmation, veuillez visiter : Introduction à la programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et Vue : une combinaison parfaite d'outils de développement front-end PHP et Vue : une combinaison parfaite d'outils de développement front-end Mar 16, 2024 pm 12:09 PM

PHP et Vue : une combinaison parfaite d'outils de développement front-end À l'ère actuelle de développement rapide d'Internet, le développement front-end est devenu de plus en plus important. Alors que les utilisateurs ont des exigences de plus en plus élevées en matière d’expérience des sites Web et des applications, les développeurs front-end doivent utiliser des outils plus efficaces et plus flexibles pour créer des interfaces réactives et interactives. En tant que deux technologies importantes dans le domaine du développement front-end, PHP et Vue.js peuvent être considérés comme une arme parfaite lorsqu'ils sont associés. Cet article explorera la combinaison de PHP et Vue, ainsi que des exemples de code détaillés pour aider les lecteurs à mieux comprendre et appliquer ces deux éléments.

Partage d'expérience en développement C# : compétences en développement collaboratif front-end et back-end Partage d'expérience en développement C# : compétences en développement collaboratif front-end et back-end Nov 23, 2023 am 10:13 AM

En tant que développeur C#, notre travail de développement comprend généralement le développement front-end et back-end. À mesure que la technologie se développe et que la complexité des projets augmente, le développement collaboratif du front-end et du back-end est devenu de plus en plus important et complexe. Cet article partagera quelques techniques de développement collaboratif front-end et back-end pour aider les développeurs C# à effectuer leur travail de développement plus efficacement. Après avoir déterminé les spécifications de l’interface, le développement collaboratif du front-end et du back-end est indissociable de l’interaction des interfaces API. Pour assurer le bon déroulement du développement collaboratif front-end et back-end, le plus important est de définir de bonnes spécifications d’interface. La spécification de l'interface implique le nom de l'interface

Questions fréquemment posées par les enquêteurs front-end Questions fréquemment posées par les enquêteurs front-end Mar 19, 2024 pm 02:24 PM

Lors des entretiens de développement front-end, les questions courantes couvrent un large éventail de sujets, notamment les bases HTML/CSS, les bases JavaScript, les frameworks et les bibliothèques, l'expérience du projet, les algorithmes et les structures de données, l'optimisation des performances, les requêtes inter-domaines, l'ingénierie front-end, les modèles de conception et les nouvelles technologies et tendances. Les questions de l'intervieweur sont conçues pour évaluer les compétences techniques du candidat, son expérience en matière de projet et sa compréhension des tendances du secteur. Par conséquent, les candidats doivent être parfaitement préparés dans ces domaines pour démontrer leurs capacités et leur expertise.

Django est-il front-end ou back-end ? Vérifiez-le! Django est-il front-end ou back-end ? Vérifiez-le! Jan 19, 2024 am 08:37 AM

Django est un framework d'application Web écrit en Python qui met l'accent sur un développement rapide et des méthodes propres. Bien que Django soit un framework Web, pour répondre à la question de savoir si Django est un front-end ou un back-end, vous devez avoir une compréhension approfondie des concepts de front-end et de back-end. Le front-end fait référence à l'interface avec laquelle les utilisateurs interagissent directement, et le back-end fait référence aux programmes côté serveur. Ils interagissent avec les données via le protocole HTTP. Lorsque le front-end et le back-end sont séparés, les programmes front-end et back-end peuvent être développés indépendamment pour mettre en œuvre respectivement la logique métier et les effets interactifs, ainsi que l'échange de données.

Explorer la technologie front-end du langage Go : une nouvelle vision du développement front-end Explorer la technologie front-end du langage Go : une nouvelle vision du développement front-end Mar 28, 2024 pm 01:06 PM

En tant que langage de programmation rapide et efficace, le langage Go est très populaire dans le domaine du développement back-end. Cependant, peu de gens associent le langage Go au développement front-end. En fait, l’utilisation du langage Go pour le développement front-end peut non seulement améliorer l’efficacité, mais également ouvrir de nouveaux horizons aux développeurs. Cet article explorera la possibilité d'utiliser le langage Go pour le développement front-end et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre ce domaine. Dans le développement front-end traditionnel, JavaScript, HTML et CSS sont souvent utilisés pour créer des interfaces utilisateur.

Comment implémenter la messagerie instantanée sur le front-end Comment implémenter la messagerie instantanée sur le front-end Oct 09, 2023 pm 02:47 PM

Les méthodes de mise en œuvre de la messagerie instantanée incluent WebSocket, Long Polling, Server-Sent Events, WebRTC, etc. Introduction détaillée : 1. WebSocket, qui peut établir une connexion persistante entre le client et le serveur pour obtenir une communication bidirectionnelle en temps réel. Le frontal peut utiliser l'API WebSocket pour créer une connexion WebSocket et obtenir une messagerie instantanée en envoyant et en recevant. messages 2. Long Polling, une technologie qui simule la communication en temps réel, etc.

Django : Un framework magique capable de gérer à la fois le développement front-end et back-end ! Django : Un framework magique capable de gérer à la fois le développement front-end et back-end ! Jan 19, 2024 am 08:52 AM

Django : Un framework magique capable de gérer à la fois le développement front-end et back-end ! Django est un framework d'application Web efficace et évolutif. Il est capable de prendre en charge plusieurs modèles de développement Web, notamment MVC et MTV, et peut facilement développer des applications Web de haute qualité. Django prend non seulement en charge le développement back-end, mais peut également créer rapidement des interfaces frontales et obtenir un affichage de vue flexible via un langage de modèle. Django combine le développement front-end et le développement back-end dans une intégration transparente, afin que les développeurs n'aient pas à se spécialiser dans l'apprentissage.

Combinaison de Golang et de technologie front-end : découvrez comment Golang joue un rôle dans le domaine front-end Combinaison de Golang et de technologie front-end : découvrez comment Golang joue un rôle dans le domaine front-end Mar 19, 2024 pm 06:15 PM

Combinaison de Golang et de la technologie front-end : pour explorer le rôle de Golang dans le domaine front-end, des exemples de code spécifiques sont nécessaires. Avec le développement rapide d'Internet et des applications mobiles, la technologie front-end est devenue de plus en plus importante. Dans ce domaine, Golang, en tant que puissant langage de programmation back-end, peut également jouer un rôle important. Cet article explorera comment Golang est combiné avec la technologie front-end et démontrera son potentiel dans le domaine front-end à travers des exemples de code spécifiques. Le rôle de Golang dans le domaine front-end est celui d'un outil efficace, concis et facile à apprendre.

See all articles