Vueプロジェクトで Pinia 状態管理ツールを使用するにはどうすればよいですか?次の記事では、Vue プロジェクトでの Pinia 状態管理ツールの使用について説明します。
Pinia 公式 Web サイトには次のように記載されています: Pinia は、コンポーネント/ページ間で状態を共有できる Vue のリポジトリです。 Vuex は状態管理ツールとしても使用できますが、この 2 つの違いは何でしょうか?
Pinia と Vuex の違い
- Pinia にはストア、ゲッター、アクションのみがあり、ミューテーションがないため、状態管理の操作が簡素化されます。 [関連する推奨事項: vuejs ビデオ チュートリアル 、Web フロントエンド開発 ]
- pinia のモジュール分割にはモジュールは必要ありません、
- pinia の自動コード分割
- Pinia は ts と vue3 の合成 API を適切にサポートしています。
- Pinia はサイズが小さく、パフォーマンスが優れています
Pinia を使用してください
defineStore( )
メソッドの最初のパラメータ: コンテナの名前。名前は一意である必要があり、重複することはできません。defineStore( )
2 番目のパラメータメソッド: 構成オブジェクト、配置状態、ゲッター、アクションstate
属性: グローバル状態を保存するために使用されますgetter
属性: 状態の変化を監視または計算するために使用されます。キャッシュ関数付きactions
属性: 状態グローバル状態データを変更します。これは非同期または同期可能ですPinia
vue2.x または vue3.x で使用できます
- インストール
yarn add pinia -S
-
main.js
はじめに
import {createApp} from "vue" import App from "./app.vue" import store from "./store/index.js" const app = createApp(App); const store = createPinia(); app.use(store).mount("#app")
- ストア ファイル内 #
import {definePinia} from "pinia" export default testStore = definePinia('testId',{ state:()=>{ tname:"test", tnum:0, }, getters:{ changeTnum(){ console.log("getters") this.tnum++; } }, actions:{ addNum(val){ this.tnum += val } }, //持久化存储配置 presist:{ enable:true,// strategies:[ { key:"testId", storage:localStorage, paths:['tnum'] } ] } })
フォルダーの下に新しい test.js を作成します。アクションを使用する場合、アロー関数のバインディングは外部にあるため、アロー関数は使用できません。これはアクションで現在のストアを指します
- 管理を容易にするためにストア フォルダーの下に新しいindex.jsを作成します
import {createPinia} from "pinia" const store = createPinia(); export default store
- New
- A.vue
コンポーネント、ストア モジュールと
storeToRefsメソッド
storeToRefs:
store内のデータを分解し、応答性を高めますデータ
<template> <div> <div> {{tname}}</div> <div> {{tid}}</div> <div> tnum: {{tnum}}</div> <div> {{tchangeNum}}</div> <div><button @click="tchangeName">修改</button></div> <div> <button @click="treset">重置</button></div> <div @click="actionsBtn">actionsBtn</div> </div> </template>
<script setup> import { storeToRefs } from 'pinia' import { useStore } from '../store/user' import { useTest } from '../store/test.js' const testStore = useTest(); let { tname, tchangeNum, tnum } = storeToRefs(testStore) </script>データを直接変更する 2 つの方法データを直接変更するための
$path の使用と比較して、公式は、
$patch を明確にしています。 メソッドは最適化されており、変更が高速化され、プログラムのパフォーマンスに大きなメリットをもたらします。そのため、ステータスデータを複数のデータで同時に更新する場合は、
$patch メソッドを使用して更新することをお勧めします。
直接変更することもできますが、コード構造上、グローバル状態管理は各コンポーネントで状態を直接変更すべきではなく、
actions で統一された方法で変更する必要があります (piain には突然変異)。
//直接修改数据 tchangeName(){ tname.value = "测试数据"; tnum.value++; } //当然也可以使用`$path`批量修改 tchangeName(){ testStore.$path(state=>{ state.tname = "测试数据"; state.value = 7; }) }アクションを使用してデータを変更する#アクション
でメソッドを直接呼び出し、パラメータを渡すことができます <pre class='brush:php;toolbar:false;'>const actionsBtn = (){
testStore.addNum(5)
}</pre>
状態のデータをリセット
には $reset
メソッドがあり、store
<pre class='brush:php;toolbar:false;'>const treset = (){
testStore.$reset()
}</pre>
Pinia 永続ストレージのデータを直接リセットできます。
yarn add pinia-plugin-persist
- index.js
- を構成する必要があります。
pinia-plugin-presist
pluginを導入しますimport {createPinia} from "pinia" import piniaPluginPresist from "pinia-plugin-presist" const store = createPinia(); store.use(piniaPluginPresist) export default store
stoeフォルダーの下にtest.jsファイルを設定し、使用します構成する
presist
import {definePinia} from "pinia" export default testStore = definePinia('testId',{ state:()=>{ tname:"test", tnum:0, }, getters:{ changeTnum(){ console.log("getters") this.tnum++; } }, actions:{ addNum(val){ this.tnum += val } }, //持久化存储配置 presist:{ enable:true,// strategies:[ { key:"testId", storage:localStorage, paths:['tnum'] } ] } })
enable:true
- sessionStorage
- を使用します。
-
戦略を保存するには、詳細構成
-
keyに進みます。キーが設定されていない場合、ストレージのキーは
definePinia# の最初の属性になります。 ##. キー値が設定されている場合、ストレージの属性名がカスタマイズされますstorage:localStorage
、キャッシュ モードをローカル ストレージ
- paths に設定します
、設定されていない場合、
state で使用されるデータが処理されます。 永続ストレージ、設定すると、設定された属性のみが永続的に保存されます。 -
Pinia モジュール実装
user.js
Pinia のストアは互いに呼び出します
例: test.js
user.js
中 state の
name 属性値は
test.js
user.js
import { defineStore } from 'pinia' import { userStore } from "./user.js" export const useTest = defineStore("testId", { state: () => { return { tid: "111", tname: "pinia", tnum: 0 } }, getters: { tchangeNum() { console.log('getters') return this.tnum + 100 } }, actions: { tupNum(val) { console.log('actions') this.tnum += val; }, getUserData() { console.log(useStore().name); return useStore().name; }, }, persist: { //走的session enabled: true, strategies: [ { key: "my_testId", storage: localStorage, paths: ['tnum'] } ] } })
user.js に導入されています中
import { defineStore } from 'pinia' export const useStore = defineStore('storeId', { state: () => { return { num: 0, name: '张三' } } })
A.vueコンポーネント。
test.js
getUserDataメソッドを呼び出して、
uesr.jsを取得します。 ##名前
値 (##)<pre class='brush:php;toolbar:false;'>const actionBtn = () => {
testStore.getUserData()
};</pre><p>(学习视频分享:<a href="https://www.php.cn/course/list/91.html" target="_blank" textvalue="编程基础视频">编程基础视频</a>)<br></p>
以上がVue プロジェクトで Pinia 状態管理ツールを使用する方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Vue.JSは、パフォーマンスと開発効率を向上させるために、直接操作DOMではなく仮想DOMを使用します。 1)仮想DOMは、DOM操作を最小限に抑え、パフォーマンスを改善するために、DIFFアルゴリズムを介して計算されます。 2)開発を簡素化すると、開発者はDOMの複雑さに対処する必要はありません。 3)コンポーネントの再利用と組み合わせがより効率的です。仮想DOMの実用的な原則は、新しいツリーと古いツリーとの比較を生成し、差異のみを更新し、DOM操作の数を減らすことです。

henthevuue.jsvirtualdomdetectsachange、itupdatesthevirtualdom、diffsit、およびAppliesminimalchangestothestotoreldom。

Vue.jsのVirtualdomは、実際のDomの鏡であり、正確ではありません。 1.作成と更新:Vue.jsは、コンポーネントの定義に基づいてVirtualdomツリーを作成し、まず状態が変更されたときにVirtualDomを更新します。 2。違いとパッチング:DIFF操作による古い仮想ドームと新しい仮想ドミーの比較、そして最小変更のみを実際のDOMに適用します。 3。効率:VirtualDomは、バッチの更新を許可し、直接DOM操作を削減し、レンダリングプロセスを最適化します。 VirtualDomは、Vue.jsがUIの更新を最適化するための戦略的ツールです。

Vue.jsとReactはそれぞれ、スケーラビリティと保守性に独自の利点があります。 1)Vue.jsは使いやすく、小規模プロジェクトに適しています。構成APIは、大規模なプロジェクトの保守性を向上させます。 2)Reactは、フックと仮想DOMがパフォーマンスと保守性を向上させる大規模で複雑なプロジェクトに適していますが、学習曲線は急です。

Vue.jsとReactの将来の傾向と予測は次のとおりです。1)Vue.jsはエンタープライズレベルのアプリケーションで広く使用され、サーバー側のレンダリングおよび静的サイト生成でブレークスルーを行いました。 2)Reactは、サーバーコンポーネントとデータ収集で革新され、並行性モデルをさらに最適化します。

Netflixのフロントエンドテクノロジースタックは、主にReactとReduxに基づいています。 1.反応は、高性能のシングルページアプリケーションを構築するために使用され、コンポーネント開発を通じてコードの再利用性とメンテナンスを改善します。 2。国家管理には、状態の変更が予測可能で追跡可能であることを確認するために、国家管理に使用されます。 3.ツールチェーンには、コードの品質とパフォーマンスを確保するために、Webpack、Babel、Jest、および酵素が含まれています。 4.パフォーマンスの最適化は、ユーザーエクスペリエンスを向上させるためのコードセグメンテーション、怠zyな読み込み、サーバー側のレンダリングを通じて達成されます。

Vue.jsは、非常にインタラクティブなユーザーインターフェイスを構築するのに適したプログレッシブフレームワークです。そのコア機能には、レスポンシブシステム、コンポーネント開発、ルーティング管理が含まれます。 1)レスポンシブシステムは、Object.DefinePropertyまたはプロキシを介したデータ監視を実現し、インターフェイスを自動的に更新します。 2)コンポーネント開発により、インターフェイスを再利用可能なモジュールに分割できます。 3)Vuerouterは、ユーザーエクスペリエンスを向上させるための単一ページアプリケーションをサポートしています。

vue.jsの主な欠点には次のものが含まれます。1。エコシステムは比較的新しいものであり、サードパーティのライブラリとツールは他のフレームワークほど豊富ではありません。 2。複雑な関数では、学習曲線が急になります。 3.コミュニティのサポートとリソースは、反応や角度ほど広範ではありません。 4.パフォーマンスの問題は、大規模なアプリケーションで発生する可能性があります。 5。バージョンのアップグレードと互換性の課題が大きくなります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
