Vue プロジェクトで Pinia 状態管理ツールを使用する方法の簡単な分析
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>
$path の使用と比較して、公式は、
$patch を明確にしています。 メソッドは最適化されており、変更が高速化され、プログラムのパフォーマンスに大きなメリットをもたらします。そのため、ステータスデータを複数のデータで同時に更新する場合は、
$patch メソッドを使用して更新することをお勧めします。
直接変更することもできますが、コード構造上、グローバル状態管理は各コンポーネントで状態を直接変更すべきではなく、
actions で統一された方法で変更する必要があります (piain には突然変異)。
//直接修改数据 tchangeName(){ tname.value = "测试数据"; tnum.value++; } //当然也可以使用`$path`批量修改 tchangeName(){ testStore.$path(state=>{ state.tname = "测试数据"; state.value = 7; }) }
でメソッドを直接呼び出し、パラメータを渡すことができます <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>const actionsBtn = (){
testStore.addNum(5)
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
状態のデータをリセット
には $reset
メソッドがあり、store
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>const treset = (){
testStore.$reset()
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
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 (学习视频分享:编程基础视频) 以上がVue プロジェクトで Pinia 状態管理ツールを使用する方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。メソッドを呼び出して、
uesr.jsを取得します。 ##名前
値 (##)
const actionBtn = () => {
testStore.getUserData()
};

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

Vue.jsでは、Lazy Loadingを使用すると、コンポーネントまたはリソースを必要に応じて動的にロードすることができ、初期ページの読み込み時間を短縮し、パフォーマンスを改善できます。特定の実装方法には、&lt; Keep-Alive&gt;および&lt;コンポーネントは&gt;コンポーネント。怠zyなロードは、FOUC(スプラッシュ画面)の問題を引き起こす可能性があり、不必要なパフォーマンスのオーバーヘッドを避けるために怠zyなロードが必要なコンポーネントにのみ使用する必要があることに注意してください。

CSSアニメーションまたはサードパーティライブラリを使用して、VUEでマーキー/テキストスクロール効果を実装します。この記事では、CSSアニメーションの使用方法を紹介します。スクロールテキストを作成し、テキストを&lt; div&gt;をラップします。 CSSアニメーションを定義し、オーバーフローを設定します:非表示、幅、アニメーション。キーフレームを定義し、アニメーションの開始と終了時にtranslatex()を設定します。期間、スクロール速度、方向などのアニメーションプロパティを調整します。

HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

Vue Devtoolsを使用してブラウザのコンソールでVueタブを表示することにより、Vueバージョンを照会できます。 NPMを使用して、「NPM List -G Vue」コマンドを実行します。 package.jsonファイルの「依存関係」オブジェクトでVueアイテムを見つけます。 Vue CLIプロジェクトの場合、「Vue -Version」コマンドを実行します。 &lt; script&gt;でバージョン情報を確認してくださいVueファイルを参照するHTMLファイルにタグを付けます。

vue.jsには、前のページに戻る4つの方法があります。$ router.go(-1)$ router.back()outes&lt; router-link to =&quot;/&quot; Component Window.history.back()、およびメソッド選択はシーンに依存します。
