


Analisis ringkas tentang cara menggunakan alat pengurusan negeri Pinia dalam projek Vue
Bagaimana untuk menggunakan alat pengurusan negeri Pinia dalam projek Vue? Artikel berikut akan bercakap dengan anda tentang penggunaan alat pengurusan negeri Pinia dalam projek Vue, saya harap ia akan membantu anda!
Laman web rasmi Pinia berkata: Pinia ialah repositori untuk Vue yang membolehkan anda berkongsi keadaan merentas komponen/halaman. Vuex juga boleh digunakan sebagai alat pengurusan negeri, jadi apakah perbezaan antara keduanya?
Perbezaan antara Pinia dan Vuex
- Pinia hanya mempunyai stor, getter, tindakan dan tiada mutasi, yang memudahkan operasi pengurusan negeri. [Cadangan berkaitan: tutorial video vuejs, pembangunan bahagian hadapan web]
- bahagian modul pinia tidak memerlukan modul,
- pemisahan kod automatik pinia
- pinia mempunyai sokongan yang baik untuk ts dan API komposisi vue3
- pinia lebih kecil dan mempunyai prestasi yang lebih baik
Gunakan Pinia
defineStore( )
Parameter pertama kaedah: nama bekas, nama mestilah unik dan tidak boleh diulangdefineStore( )
Parameter kedua kaedah: konfigurasikan objek, keadaan tempat, getter, tindakanstate
Atribut: Gunakan Untuk menyimpan keadaan globalgetters
Atribut: Digunakan untuk memantau atau mengira perubahan keadaan, dengan fungsi cachingactions
Atribut: Ubah suai keadaan data keadaan global, yang boleh tak segerak atau segerakPinia
boleh digunakan dalam vue2.x atau vue3.x
- Pemasangan
yarn add pinia -S
-
main.js
Perkenalkan
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")
- Buat test.js baharu dalam folder kedai
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'] } ] } })
在用actions的时候,不能使用箭头函数,因为箭头函数绑定是外部的this。actions里的this指向当前store
- Buat index.js baharu di bawah folder kedai untuk pengurusan mudah
import {createPinia} from "pinia" const store = createPinia(); export default store
- Buat komponen
A.vue
baharu dan perkenalkan modul kedai danstoreToRefs
kaedah
storeToRefs
: Nyahbina data dalamstore
dan jadikannya data responsif
<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>
Dua cara untuk mengubah suai data secara langsung
Secara langsung mengubah suai data dan Berbanding dengan menggunakan $path
untuk mengubah suai data, pegawai telah menjelaskan dengan jelas bahawa kaedah $patch
dioptimumkan dan akan mempercepatkan pengubahsuaian, yang memberi manfaat besar kepada prestasi program. Jadi, jika anda mengemas kini data status untuk berbilang keping data pada masa yang sama, adalah disyorkan untuk menggunakan kaedah $patch
untuk mengemas kini.
Walaupun ia boleh diubah suai secara langsung, disebabkan oleh struktur kod, pengurusan keadaan global tidak seharusnya mengubah suai status setiap komponen secara langsung Ia harus diubah suai dalam kaedah bersatu dalam actions
(piain tidak mempunyai mutasi). .
//直接修改数据 tchangeName(){ tname.value = "测试数据"; tnum.value++; } //当然也可以使用`$path`批量修改 tchangeName(){ testStore.$path(state=>{ state.tname = "测试数据"; state.value = 7; }) }
Gunakan tindakan untuk mengubah suai data
Panggil kaedah secara langsung dalam actions
dan lulus parameter
const actionsBtn = (){ testStore.addNum(5) }
Tetapkan semula data dalam keadaan
store
mempunyai kaedah $reset
, yang boleh menetapkan semula data secara langsung dalam store
const treset = (){ testStore.$reset() }
Storan berterusan Pinia
- memerlukan kerjasama Pemalam berikut gunakan
yarn add pinia-plugin-persist
- untuk mengkonfigurasi fail
store
di bawah folderindex.js
dan memperkenalkanpinia-plugin-presist
plug masuk
import {createPinia} from "pinia" import piniaPluginPresist from "pinia-plugin-presist" const store = createPinia(); store.use(piniaPluginPresist) export default store
- Konfigurasikan fail test.js di bawah folder stoe, gunakan atribut
presist
untuk mengkonfigurasi
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
, dayakan storan berterusan dan gunakansessionStorage
storan secara lalai
-strategies
, untuk konfigurasi lanjut
-key
, apabila kunci tidak ditetapkan, kunci storan ialah atribut pertamadefinePinia
Apabila nilai kunci ditetapkan, nama atribut storan diperibadikanstorage:localStorage
, tetapkan mod cache kepada storan setempatpaths
Jika tidak ditetapkan, data yang digunakan dalamstate
akan dikekalkan , ia hanya akan digunakan untuk atribut yang ditetapkan
Pelaksanaan modular Pinia
Pelaksanaan modular bermakna mencipta fail js baharu dalam stor untuk modul yang akan digunakan, seperti sebagai fail user.js
. Kemudian kandungan konfigurasi adalah sama seperti modul lain, ditetapkan mengikut keperluan anda sendiri, dan kemudian diperkenalkan pada halaman yang sepadan.
Kedai di Pinia memanggil satu sama lain
Contohnya: test.js
mendapat user.js
nilai atribut state
dalam name
dan memperkenalkannya dalam test.js
Dalam komponen 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
, panggil kaedah
import { defineStore } from 'pinia' export const useStore = defineStore('storeId', { state: () => { return { num: 0, name: '张三' } } })
>NilaiA.vue
const actionBtn = () => { testStore.getUserData() };
(学习视频分享:编程基础视频)
Atas ialah kandungan terperinci Analisis ringkas tentang cara menggunakan alat pengurusan negeri Pinia dalam projek Vue. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Terdapat tiga cara untuk merujuk kepada fail JS dalam vue.js: Secara langsung tentukan jalan menggunakan & lt; skrip & gt; tag ;; import dinamik menggunakan cangkuk kitaran hayat yang dipasang (); dan mengimport melalui Perpustakaan Pengurusan Negeri VUEX.

Pilihan Watch di Vue.js membolehkan pemaju mendengar perubahan dalam data tertentu. Apabila data berubah, tontonkan mencetuskan fungsi panggil balik untuk melakukan paparan kemas kini atau tugas lain. Pilihan konfigurasinya termasuk segera, yang menentukan sama ada untuk melaksanakan panggilan balik dengan serta -merta, dan mendalam, yang menentukan sama ada untuk mendengarkan secara rekursif terhadap objek atau tatasusunan.

Menggunakan bootstrap dalam vue.js dibahagikan kepada lima langkah: Pasang bootstrap. Import bootstrap di main.js. Gunakan komponen bootstrap secara langsung dalam templat. Pilihan: Gaya tersuai. Pilihan: Gunakan pemalam.

Dalam vue.js, pemuatan malas membolehkan komponen atau sumber dimuatkan secara dinamik seperti yang diperlukan, mengurangkan masa pemuatan halaman awal dan meningkatkan prestasi. Kaedah pelaksanaan khusus termasuk menggunakan & lt; menyimpan-Alive & gt; dan & lt; komponen adalah & gt; komponen. Harus diingat bahawa pemuatan malas boleh menyebabkan masalah fouc (skrin percikan) dan harus digunakan hanya untuk komponen yang memerlukan pemuatan malas untuk mengelakkan overhead prestasi yang tidak perlu.

Anda boleh menambah fungsi ke butang VUE dengan mengikat butang dalam templat HTML ke kaedah. Tentukan kaedah dan tulis logik fungsi dalam contoh Vue.

Melaksanakan kesan menatal marquee/teks di VUE, menggunakan animasi CSS atau perpustakaan pihak ketiga. Artikel ini memperkenalkan cara menggunakan animasi CSS: Buat teks tatal dan bungkus teks dengan & lt; div & gt;. Tentukan animasi CSS dan tetapkan limpahan: tersembunyi, lebar, dan animasi. Tentukan frasa key, set Transform: TranslateX () pada permulaan dan akhir animasi. Laraskan sifat animasi seperti tempoh, kelajuan tatal, dan arah.

Anda boleh menanyakan versi VUE dengan menggunakan Vue Devtools untuk melihat tab VUE dalam konsol penyemak imbas. Gunakan NPM untuk menjalankan arahan "NPM LIST -G VUE". Cari item VUE dalam objek "Dependencies" fail Package.json. Untuk projek Vue CLI, jalankan perintah "Vue -version". Semak maklumat versi di & lt; skrip & gt; Tag dalam fail HTML yang merujuk kepada fail VUE.

Vue.js mempunyai empat kaedah untuk kembali ke halaman sebelumnya: $ router.go (-1) $ router.back () menggunakan & lt; router-link to = & quot;/& quot; Komponen Window.History.Back (), dan pemilihan kaedah bergantung pada tempat kejadian.
