


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 diperibadikan -
storage:localStorage
, tetapkan mod cache kepada storan setempat -
paths
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: '张三' } } })untuk mendapatkan >Nilai
A.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!

Netflix terutamanya menggunakan React sebagai rangka kerja front-end, ditambah dengan VUE untuk fungsi tertentu. 1) Komponen React dan DOM maya meningkatkan prestasi dan kecekapan pembangunan aplikasi Netflix. 2) VUE digunakan dalam alat dalaman dan projek kecil Netflix, dan fleksibiliti dan kemudahan penggunaannya adalah kunci.

Vue.js adalah rangka kerja JavaScript yang progresif yang sesuai untuk membina antara muka pengguna yang kompleks. 1) Konsep terasnya termasuk data responsif, komponen dan DOM maya. 2) Dalam aplikasi praktikal, ia boleh ditunjukkan dengan membina aplikasi todo dan mengintegrasikan vuerouter. 3) Apabila debugging, disyorkan untuk menggunakan Vuedevtools dan Console.log. 4) Pengoptimuman prestasi boleh dicapai melalui V-IF/V-Show, senarai pengoptimuman rendering, pemuatan asynchronous komponen, dll.

Vue.js sesuai untuk projek kecil dan sederhana, sementara React lebih sesuai untuk aplikasi besar dan kompleks. 1. Sistem responsif vue.js secara automatik mengemas kini DOM melalui pengesanan ketergantungan, menjadikannya mudah untuk menguruskan perubahan data. 2. Leact mengamalkan aliran data sehala, dan data mengalir dari komponen induk ke komponen kanak-kanak, menyediakan aliran data yang jelas dan struktur yang mudah dibuang.

Vue.js sesuai untuk projek kecil dan sederhana dan lelaran yang cepat, sementara React sesuai untuk aplikasi besar dan kompleks. 1) Vue.js mudah digunakan dan sesuai untuk situasi di mana pasukan tidak mencukupi atau skala projek kecil. 2) React mempunyai ekosistem yang lebih kaya dan sesuai untuk projek dengan prestasi tinggi dan keperluan fungsional yang kompleks.

Kaedah untuk melaksanakan lompatan tag dalam Vue termasuk: menggunakan tag dalam templat HTML untuk menentukan atribut HREF. Gunakan komponen router-link routing VUE. Gunakan ini. $ Router.push () kaedah dalam JavaScript. Parameter boleh dilalui melalui parameter pertanyaan dan laluan dikonfigurasikan dalam pilihan penghala untuk lompatan dinamik.

Terdapat kaedah berikut untuk melaksanakan lompat komponen di Vue: Gunakan Router-Link dan & lt; Router-View & GT; Komponen untuk melaksanakan lompat hiperpautan, dan tentukan: untuk atribut sebagai laluan sasaran. Gunakan & lt; router-view & gt; Komponen secara langsung untuk memaparkan komponen yang dijalankan yang sedang dialihkan. Gunakan kaedah router.push () dan router.replace () untuk navigasi programatik. Bekas menjimatkan sejarah dan yang kedua menggantikan laluan semasa tanpa meninggalkan rekod.

Terdapat dua cara untuk melompat elemen div di Vue: Gunakan Vue Router dan tambahkan komponen router-link. Tambah pendengar acara @Click dan panggil ini. $ Router.push () kaedah untuk melompat.

Terdapat dua cara utama untuk lulus data dalam VUE: Props: Data satu arah mengikat, lulus data dari komponen induk ke komponen kanak-kanak. Peristiwa: Lulus data antara komponen menggunakan peristiwa dan peristiwa tersuai.


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

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa