Inhaltsverzeichnis
Neues Vue3-Statusverwaltungstool: Pinia
Heim Web-Frontend View.js Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia

Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia

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

In diesem Artikel stellen wir Ihnen das neue Vue3-Statusverwaltungstool vor: Pinia. Lassen Sie uns über die Installation und Verwendung des Pinia-Tools sprechen.

Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia

Neues Vue3-Statusverwaltungstool: Pinia

Vue3 ist seit einiger Zeit veröffentlicht. Es übernimmt ein neues reaktionsfähiges System und erstellt einen neuen Satz von Composition API. Das umgebende Ökosystem von Vue verstärkt seine Bemühungen, sich an dieses neue System anzupassen, und auch die offizielle Staatsverwaltungsbibliothek Vuex passt sich an. Aus diesem Grund hat der Beamte einen neuen Vorschlag für Vuex 5 vorgelegt. [Verwandte Empfehlungen: „vue.js-Tutorial"]Composition API。Vue 的周边生态都在加紧适配这套新的系统,官方的状态管理库 Vuex 也在适配中,为此官方提出了一个 Vuex 5 的全新提案。【相关推荐:《vue.js教程》】

Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia

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

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

Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia

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

安装

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

# yarn
yarn add pinia@next
# npm
npm i pinia@next
Nach dem Login kopieren

安装完成后,需要在 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')
Nach dem Login kopieren

上手

要使用 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
Nach dem Login kopieren

除了使用上述类似 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
Nach dem Login kopieren

使用 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'])
  }
}
Nach dem Login kopieren

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
    }
  }
}
Nach dem Login kopieren

类型提示

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

Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia

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

Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia

Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia

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

Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia

  • Unterstützt zwei Syntaxen zum Erstellen eines Stores: Options Api und Composition Api;
  • Mutationen löschen, unterstützen nur state, getters, actions; Das modulare Design kann die Codeaufteilung gut unterstützen.
  • Es gibt keine verschachtelten Module, sondern nur das Store-Konzept. li>
  • Vollständige TypeScript-Unterstützung
Teilen Sie das neue Statusverwaltungstool von Vue3: PiniaUnter diesem Vorschlag gibt es einen interessanten Kommentar. Eine einfache Übersetzung:

Teilen Sie das neue Statusverwaltungstool von Vue3: PiniaWas für ein Zufall, man kann nicht sagen, dass der Vuex5-Vorschlag nichts mit den von Pinia implementierten Funktionen zu tun hat, man kann nur sagen, dass er genau das Gleiche ist. Der heutige Artikel wird Ihnen diese Ananas vorstellen.

Installation

Im bestehenden Projekt wurde der folgende Befehl verwendet, um das Pinia-Modul zu installieren. Teilen Sie das neue Statusverwaltungstool von Vue3: Piniarrreee

Nachdem die Installation abgeschlossen ist, müssen Sie sie in die Eintragsdatei des Vue3-Projekts importieren und installieren.

rrreeeTeilen Sie das neue Statusverwaltungstool von Vue3: Pinia

Erste Schritte🎜🎜🎜Um Pinia zu verwenden, müssen Sie nur einen Shop definieren und ihn dann dort importieren, wo die Daten verwendet werden. 🎜🎜🎜Store definieren🎜🎜rrreee🎜Zusätzlich zur Verwendung der oben genannten Vuex-ähnlichen Methode zum Erstellen des Status können Sie auch die Form von function verwenden, um einen Store zu erstellen, der setup(). 🎜rrreee🎜🎜Store verwenden🎜🎜🎜Wie bereits erwähnt, bietet Pinia zwei Möglichkeiten, den Store zu verwenden: Sowohl <code>Options Api als auch Composition Api werden perfekt unterstützt. 🎜🎜🎜Options Api🎜🎜🎜In Options Api können Sie direkt die offiziell bereitgestellten Methoden mapActions und mapState verwenden, um den Status in zu exportieren Store, Getter und Action, ihre Verwendung ist im Grunde die gleiche wie bei Vuex, und der Einstieg ist einfach. 🎜rrreee🎜🎜Composition Api🎜🎜🎜Composition Api, sowohl der Status als auch der Getter müssen über die Methode computed auf Änderungen warten, die mit der Methode Options Api identisch ist code> muss aus demselben Grund im berechneten-Objekt platziert werden. Darüber hinaus kann der in Options Api erhaltene Statuswert direkt geändert werden. Es wird natürlich empfohlen, eine Aktion zum Betreiben des Statuswerts zu schreiben, um die spätere Wartung zu erleichtern. 🎜rrreee🎜🎜Typhinweise🎜🎜🎜In Vuex sind die Typhinweise von TypeScript nicht sehr gut. Bei der Typableitung können Sie nur den Status ermitteln. Insbesondere beim Schreiben von Code sind die Code-Eingabeaufforderungen sehr unintelligent. 🎜🎜Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia🎜🎜Und Mit Pinia können Sie alle definierten Zustände, Getter und Aktionen ableiten, was beim Schreiben von Code viel praktischer ist. 🎜🎜Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia🎜🎜🎜🎜 Hauptsächlich hat Pinia TypeScript bestanden hat eine sehr benutzerfreundliche Typdefinition. Wenn Sie interessiert sind, können Sie sich die Typdefinitionsdatei von Pinia ansehen (pinia.d.ts): 🎜🎜🎜🎜🎜🎜Code-Splitting🎜🎜🎜Aufgrund von Die Verwendung von Modulen Aufgrund des zentralisierten Designs können alle Filialen einzeln eingeführt werden, anstatt alle Module über Module wie vuex in einem Filiale zusammenzufassen. 🎜🎜Angenommen, wir erstellen derzeit einen Store über Vuex. Unter diesem Store gibt es zwei Module, nämlich das Benutzermodul (Benutzer) und das Produktmodul (Waren). Selbst wenn die aktuelle Homepage nur Benutzerinformationen verwendet, wird der gesamte Store in den js-Block der Homepage gepackt. 🎜🎜🎜🎜🎜🎜🎜

Wenn wir Pinia verwenden, definieren wir mit defineStore zwei völlig getrennte Geschäfte. Wenn die beiden Seiten eingeführt werden, wirken sie sich nicht gegenseitig aus. Bei der endgültigen Verpackung werden der js-Teil der Homepage und der js-Teil der Produktseite jeweils in die entsprechenden Stores gepackt.

Teilen Sie das neue Statusverwaltungstool von Vue3: Pinia

Die Einführung von Pinia endet hier. Wenn neue Projekte mit Vue3 entwickelt werden müssen, wird empfohlen, Pinia ohne Gehirn zu verwenden. Es ist prägnanter und nur 1 KB groß.

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung! !

Das obige ist der detaillierte Inhalt vonTeilen Sie das neue Statusverwaltungstool von Vue3: Pinia. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP und Vue: eine perfekte Kombination von Front-End-Entwicklungstools PHP und Vue: eine perfekte Kombination von Front-End-Entwicklungstools Mar 16, 2024 pm 12:09 PM

PHP und Vue: eine perfekte Kombination von Front-End-Entwicklungstools In der heutigen Zeit der rasanten Entwicklung des Internets ist die Front-End-Entwicklung immer wichtiger geworden. Da Benutzer immer höhere Anforderungen an das Erlebnis von Websites und Anwendungen stellen, müssen Frontend-Entwickler effizientere und flexiblere Tools verwenden, um reaktionsfähige und interaktive Schnittstellen zu erstellen. Als zwei wichtige Technologien im Bereich der Front-End-Entwicklung können PHP und Vue.js in Kombination als perfekte Waffe bezeichnet werden. In diesem Artikel geht es um die Kombination von PHP und Vue sowie um detaillierte Codebeispiele, die den Lesern helfen sollen, diese beiden besser zu verstehen und anzuwenden

Erfahrungsaustausch in der C#-Entwicklung: Fähigkeiten zur kollaborativen Front-End- und Back-End-Entwicklung Erfahrungsaustausch in der C#-Entwicklung: Fähigkeiten zur kollaborativen Front-End- und Back-End-Entwicklung Nov 23, 2023 am 10:13 AM

Als C#-Entwickler umfasst unsere Entwicklungsarbeit in der Regel die Front-End- und Back-End-Entwicklung. Mit der Weiterentwicklung der Technologie und der zunehmenden Komplexität von Projekten wird die gemeinsame Entwicklung von Front-End und Back-End immer wichtiger und komplexer. In diesem Artikel werden einige kollaborative Front-End- und Back-End-Entwicklungstechniken vorgestellt, um C#-Entwicklern dabei zu helfen, die Entwicklungsarbeit effizienter abzuschließen. Nach der Festlegung der Schnittstellenspezifikationen ist die gemeinsame Entwicklung von Front-End und Backend untrennbar mit dem Zusammenspiel der API-Schnittstellen verbunden. Um den reibungslosen Ablauf der kollaborativen Front-End- und Back-End-Entwicklung sicherzustellen, ist es am wichtigsten, gute Schnittstellenspezifikationen zu definieren. Bei der Schnittstellenspezifikation handelt es sich um den Namen der Schnittstelle

Häufig gestellte Fragen von Front-End-Interviewern Häufig gestellte Fragen von Front-End-Interviewern Mar 19, 2024 pm 02:24 PM

In Front-End-Entwicklungsinterviews decken häufige Fragen ein breites Themenspektrum ab, darunter HTML/CSS-Grundlagen, JavaScript-Grundlagen, Frameworks und Bibliotheken, Projekterfahrung, Algorithmen und Datenstrukturen, Leistungsoptimierung, domänenübergreifende Anfragen, Front-End-Engineering, Designmuster sowie neue Technologien und Trends. Interviewerfragen sollen die technischen Fähigkeiten, die Projekterfahrung und das Verständnis des Kandidaten für Branchentrends beurteilen. Daher sollten Kandidaten in diesen Bereichen umfassend vorbereitet sein, um ihre Fähigkeiten und Fachkenntnisse unter Beweis zu stellen.

Ist Django Front-End oder Back-End? Hör zu! Ist Django Front-End oder Back-End? Hör zu! Jan 19, 2024 am 08:37 AM

Django ist ein in Python geschriebenes Webanwendungs-Framework, das Wert auf schnelle Entwicklung und saubere Methoden legt. Obwohl Django ein Web-Framework ist, müssen Sie zur Beantwortung der Frage, ob Django ein Front-End oder ein Back-End ist, ein tiefes Verständnis der Konzepte von Front-End und Back-End haben. Das Front-End bezieht sich auf die Schnittstelle, mit der Benutzer direkt interagieren, und das Back-End bezieht sich auf serverseitige Programme. Sie interagieren mit Daten über das HTTP-Protokoll. Wenn das Front-End und das Back-End getrennt sind, können die Front-End- und Back-End-Programme unabhängig voneinander entwickelt werden, um Geschäftslogik bzw. interaktive Effekte sowie den Datenaustausch zu implementieren.

Erkundung der Front-End-Technologie der Go-Sprache: eine neue Vision für die Front-End-Entwicklung Erkundung der Front-End-Technologie der Go-Sprache: eine neue Vision für die Front-End-Entwicklung Mar 28, 2024 pm 01:06 PM

Als schnelle und effiziente Programmiersprache erfreut sich Go im Bereich der Backend-Entwicklung großer Beliebtheit. Allerdings assoziieren nur wenige Menschen die Go-Sprache mit der Front-End-Entwicklung. Tatsächlich kann die Verwendung der Go-Sprache für die Front-End-Entwicklung nicht nur die Effizienz verbessern, sondern Entwicklern auch neue Horizonte eröffnen. In diesem Artikel wird die Möglichkeit der Verwendung der Go-Sprache für die Front-End-Entwicklung untersucht und spezifische Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis dieses Bereichs zu erleichtern. In der traditionellen Frontend-Entwicklung werden häufig JavaScript, HTML und CSS zum Erstellen von Benutzeroberflächen verwendet

So implementieren Sie Instant Messaging im Frontend So implementieren Sie Instant Messaging im Frontend Oct 09, 2023 pm 02:47 PM

Zu den Methoden zur Implementierung von Instant Messaging gehören WebSocket, Long Polling, vom Server gesendete Ereignisse, WebRTC usw. Detaillierte Einführung: 1. WebSocket, das eine dauerhafte Verbindung zwischen dem Client und dem Server herstellen kann, um eine bidirektionale Kommunikation in Echtzeit zu erreichen. Das Front-End kann die WebSocket-API verwenden, um eine WebSocket-Verbindung herzustellen und Instant Messaging durch Senden und Empfangen zu erreichen 2. Long Polling, eine Technologie, die Echtzeitkommunikation usw. simuliert.

Django: Ein magisches Framework, das sowohl Front-End- als auch Back-End-Entwicklung bewältigen kann! Django: Ein magisches Framework, das sowohl Front-End- als auch Back-End-Entwicklung bewältigen kann! Jan 19, 2024 am 08:52 AM

Django: Ein magisches Framework, das sowohl Front-End- als auch Back-End-Entwicklung bewältigen kann! Django ist ein effizientes und skalierbares Webanwendungs-Framework. Es unterstützt mehrere Webentwicklungsmodelle, einschließlich MVC und MTV, und kann problemlos hochwertige Webanwendungen entwickeln. Django unterstützt nicht nur die Back-End-Entwicklung, sondern kann auch schnell Front-End-Schnittstellen erstellen und durch die Vorlagensprache eine flexible Ansichtsanzeige erreichen. Django kombiniert Front-End-Entwicklung und Back-End-Entwicklung zu einer nahtlosen Integration, sodass sich Entwickler nicht auf das Lernen spezialisieren müssen

Kombination von Golang- und Front-End-Technologie: Entdecken Sie, welche Rolle Golang im Front-End-Bereich spielt Kombination von Golang- und Front-End-Technologie: Entdecken Sie, welche Rolle Golang im Front-End-Bereich spielt Mar 19, 2024 pm 06:15 PM

Kombination von Golang und Front-End-Technologie: Um zu untersuchen, welche Rolle Golang im Front-End-Bereich spielt, sind spezifische Codebeispiele erforderlich. Mit der rasanten Entwicklung des Internets und mobiler Anwendungen ist die Front-End-Technologie immer wichtiger geworden. Auch in diesem Bereich kann Golang als leistungsstarke Back-End-Programmiersprache eine wichtige Rolle spielen. In diesem Artikel wird untersucht, wie Golang mit Front-End-Technologie kombiniert wird, und sein Potenzial im Front-End-Bereich anhand spezifischer Codebeispiele demonstriert. Die Rolle von Golang im Front-End-Bereich ist effizient, prägnant und leicht zu erlernen

See all articles