検索
ホームページウェブフロントエンドVue.jsVue3 の新しい状態管理ツール: Pinia を共有する

Vue3 の新しい状態管理ツール: Pinia を共有する

Dec 16, 2021 am 10:42 AM
vue.jsvuexフロントエンドステータス管理

この記事では、新しい Vue3 状態管理ツールである Pinia の紹介を共有します。Pinia ツールのインストールと使用方法について説明します。皆さんのお役に立てれば幸いです。

Vue3 の新しい状態管理ツール: Pinia を共有する

新しい Vue3 状態管理ツール: Ponia

Vue3 はしばらくリリースされており、新しい Responsive を採用しています。システムを構築し、新しい Composition API を構築しました。 Vue を取り巻くエコシステムはこの新しいシステムに適応する取り組みを強化しており、公式の状態管理ライブラリである Vuex も適応しており、このため、公式は Vuex 5 の新しい提案を提出しました。 [関連する推奨事項: 「vue.js チュートリアル 」]

Vue3 の新しい状態管理ツール: Pinia を共有する

  • は、ストアを作成するための 2 つの構文をサポートしています: Options Apiおよび Composition Api;
  • mutations を削除し、stategetteractions のみをサポートします;
  • モジュラー設計はコード分割を十分にサポートできます;
  • ネストされたモジュールはなく、ストアの概念のみ;
  • CompleteTypeScript サポート;

この提案の下に、興味深いコメントがあります。簡単な翻訳:

Vue3 の新しい状態管理ツール: Pinia を共有する

なんという偶然でしょう。Vuex5 の提案は、Ponia によって実装された機能とまったく関係がないとは言えません。まさにそのとおりであるとしか言えません。今日の記事では、このパイナップルを紹介させていただきます。

インストール

既存のプロジェクトでは、次のコマンドを使用して Ponia モジュールをインストールします。

# yarn
yarn add pinia@next
# npm
npm i pinia@next

インストールが完了したら、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')

はじめに

Ponia を使用するには、ストアを定義し、データが使用される場所にインポートするだけです。

Define 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

上記の vuex のようなメソッドを使用して状態を構築することに加えて、function フォームを使用して状態を作成することもできます。ストア (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

ストアの使用

前述したように、Pinia はストアを使用する 2 つの方法、Options ApiComposition Api を提供します。中都はそれを完璧にサポートします。

Options Api

Options Api では、公式に提供されている mapActionsmapState# を直接使用できます。 ## メソッドでは、ステート、ゲッター、アクションをストアにエクスポートしますが、使い方は基本的に Vuex と同じで簡単に始めることができます。

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

export default {
  name: 'HelloWorld',
  computed: {
    ...mapState(useCounterStore, ['count', 'double'])
  },
  methods: {
    ...mapActions(useCounterStore, ['increment'])
  }
}

Composition Api

Composition Api、状態とゲッターの両方が computed メソッドを通じて変更をリッスンする必要があります。これは Options Api と同じであり、computed オブジェクトに配置する必要があります。また、Options Api で取得した状態値は直接変更することも可能ですが、もちろん後のメンテナンスを容易にするために状態値を操作するアクションを記述することをお勧めします。

// 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
    }
  }
}

型ヒント

Vuex では、TypeScript の型ヒントがあまり良くなく、型導出を実行すると、その状態しかわかりません。特にコードを作成するプロセスでは、コードのプロンプトは非常に分かりにくいものになります。

Vue3 の新しい状態管理ツール: Pinia を共有する

また、pinia は定義されたすべての状態、ゲッター、およびアクションを推定できるため、コードを記述するときにさらに便利になります。

Vue3 の新しい状態管理ツール: Pinia を共有する

Vue3 の新しい状態管理ツール: Pinia を共有する

主な理由は、pinia は TypeScript を通じて非常に使いやすい型定義を持っているためです。興味がある場合は、pinia の型定義を見てください。ファイル (

pinia.d.ts):

Vue3 の新しい状態管理ツール: Pinia を共有する

コード分割

モジュラーを使用しているためこの設計では、vuex のようなモジュールを介してすべてのモジュールを 1 つのストアにマウントするのではなく、すべてのストアを個別に導入できます。

現在、Vuex を通じてストアを作成しているとします。このストアの下には、ユーザー モジュール (User) と製品モジュール (Goods) という 2 つのモジュールがあります。現在のホームページがユーザー情報のみを使用している場合でも、ストア全体がホームページの js チャンクにパッケージ化されます。

Vue3 の新しい状態管理ツール: Pinia を共有する

Vue3 の新しい状態管理ツール: Pinia を共有する

pinia を使用する場合は、defineStore を使用して、完全に別個の 2 つのストアを定義します。2 つのページが導入されても、相互に影響を与えることはありません。最終的なパッケージ化中に、ホームページの js チャンクと製品ページの js チャンクがそれぞれ対応するストアにパッケージ化されます。

Vue3 の新しい状態管理ツール: Pinia を共有する

Pinia の紹介はここで終わります。Vue3 を使用して新しいプロジェクトを開発する場合は、何も考えずに Pinia を使用することをお勧めします。簡潔でサイズはわずか 1KB です。

プログラミング関連の知識について詳しくは、プログラミング入門をご覧ください。 !

以上がVue3 の新しい状態管理ツール: Pinia を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はsegmentfaultで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Vue.jsの関数:フロントエンドでのユーザーエクスペリエンスの強化Vue.jsの関数:フロントエンドでのユーザーエクスペリエンスの強化Apr 19, 2025 am 12:13 AM

Vue.jsは複数の機能を介してユーザーエクスペリエンスを改善します。1。レスポンシブシステムは、リアルタイムデータフィードバックを実現します。 2。コンポーネント開発により、コードの再利用性が向上します。 3. Vuerouterはスムーズなナビゲーションを提供します。 4.動的データの結合および遷移アニメーションは、相互作用効果を強化します。 5.エラー処理メカニズムにより、ユーザーのフィードバックが保証されます。 6.パフォーマンスの最適化とベストプラクティスは、アプリケーションのパフォーマンスを改善します。

Vue.js:Web開発におけるその役割を定義しますVue.js:Web開発におけるその役割を定義しますApr 18, 2025 am 12:07 AM

Web開発におけるVue.jsの役割は、開発プロセスを簡素化し、効率を向上させるプログレッシブJavaScriptフレームワークとして機能することです。 1)開発者は、レスポンシブデータのバインディングとコンポーネント開発を通じてビジネスロジックに集中できるようになります。 2)VUE.JSの作業原則は、パフォーマンスを最適化するためにレスポンシブシステムと仮想DOMに依存しています。 3)実際のプロジェクトでは、VUEXを使用してグローバルな状態を管理し、データの応答性を最適化することが一般的な慣行です。

Vue.jsの理解:主にフロントエンドフレームワークVue.jsの理解:主にフロントエンドフレームワークApr 17, 2025 am 12:20 AM

Vue.jsは、2014年にYou YuxiがリリースしたプログレッシブJavaScriptフレームワークで、ユーザーインターフェイスを構築します。その中心的な利点には、次のものが含まれます。1。レスポンシブデータバインディング、データ変更の自動更新ビュー。 2。コンポーネントの開発では、UIは独立した再利用可能なコンポーネントに分割できます。

Netflixのフロントエンド:React(またはVue)の例とアプリケーションNetflixのフロントエンド:React(またはVue)の例とアプリケーションApr 16, 2025 am 12:08 AM

Netflixは、Reactをフロントエンドフレームワークとして使用します。 1)Reactのコンポーネント開発モデルと強力なエコシステムが、Netflixがそれを選択した主な理由です。 2)コンポーネント化により、Netflixは複雑なインターフェイスをビデオプレーヤー、推奨リスト、ユーザーコメントなどの管理可能なチャンクに分割します。 3)Reactの仮想DOMおよびコンポーネントライフサイクルは、レンダリング効率とユーザーインタラクション管理を最適化します。

フロントエンドの風景:Netflixが選択にアプローチした方法フロントエンドの風景:Netflixが選択にアプローチした方法Apr 15, 2025 am 12:13 AM

Netflixのフロントエンドテクノロジーでの選択は、主にパフォーマンスの最適化、スケーラビリティ、ユーザーエクスペリエンスの3つの側面に焦点を当てています。 1。パフォーマンスの最適化:Netflixは、Reactをメインフレームワークとして選択し、SpeedCurveやBoomerangなどのツールを開発して、ユーザーエクスペリエンスを監視および最適化しました。 2。スケーラビリティ:マイクロフロントエンドアーキテクチャを採用し、アプリケーションを独立したモジュールに分割し、開発効率とシステムのスケーラビリティを改善します。 3.ユーザーエクスペリエンス:Netflixは、Material-UIコンポーネントライブラリを使用して、A/Bテストとユーザーフィードバックを介してインターフェイスを継続的に最適化して、一貫性と美学を確保します。

React vs. Vue:Netflixはどのフレームワークを使用していますか?React vs. Vue:Netflixはどのフレームワークを使用していますか?Apr 14, 2025 am 12:19 AM

netflixusesaCustomframeworkは、「ギボン」ビルトンリアクト、notreactorvuedirectly.1)チームエクスペリエンス:seice basedonfamperivity.2)projectomplerprojects:vueforsplerprojects、racefforcomplexones.3)customeforsneeds:reactofforsmorefloficailie.

フレームワークの選択:Netflixの決定を推進するものは何ですか?フレームワークの選択:Netflixの決定を推進するものは何ですか?Apr 13, 2025 am 12:05 AM

Netflixは、主に、パフォーマンス、スケーラビリティ、開発効率、エコシステム、技術的な負債、およびフレームワーク選択におけるメンテナンスコストを考慮しています。 1。パフォーマンスとスケーラビリティ:JavaとSpringbootが選択され、大規模なデータと高い同時リクエストを効率的に処理します。 2。開発効率とエコシステム:Reactを使用して、フロントエンド開発効率を向上させ、その豊富なエコシステムを利用します。 3.技術的な負債とメンテナンスコスト:node.jsを選択してマイクロサービスを構築して、メンテナンスコストと技術的債務を削減します。

Netflixのフロントエンドの反応、Vue、および未来Netflixのフロントエンドの反応、Vue、および未来Apr 12, 2025 am 12:12 AM

Netflixは、主にReactをフロントエンドフレームワークとして使用し、特定の機能のためにVUEによって補足されます。 1)Reactのコンポーネント化と仮想DOMは、Netflixアプリケーションのパフォーマンスと開発効率を向上させます。 2)VueはNetflixの内部ツールと小規模プロジェクトで使用されており、その柔軟性と使いやすさが重要です。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境