Rumah > hujung hadapan web > View.js > Bagaimana untuk melaksanakan pengurusan negeri global dalam vuejs

Bagaimana untuk melaksanakan pengurusan negeri global dalam vuejs

青灯夜游
Lepaskan: 2023-01-13 00:45:26
asal
3156 orang telah melayarinya

Vuex boleh digunakan untuk mencapai pengurusan keadaan global dalam vuejs; Vuex ialah model pengurusan negeri yang dibangunkan khas untuk aplikasi Vue.js. Ia boleh digunakan untuk mengurus data global dan status data aplikasi yang kompleks, seperti Brother Komunikasi komponen, penghantaran nilai komponen bersarang berbilang lapisan, dsb.

Bagaimana untuk melaksanakan pengurusan negeri global dalam vuejs

Persekitaran pengendalian tutorial ini: sistem Windows 7, vue versi 2.9.6, komputer DELL G3.

vuex pengurusan negeri global

Vuex ialah alat yang direka bentuk untuk Vue.jsCorak pengurusan negeri untuk pembangunan aplikasi. Ia boleh mengurus status data aplikasi kompleks, seperti komunikasi antara komponen adik-beradik, pemindahan nilai antara komponen bersarang berbilang lapisan, dsb.

Dalam istilah awam, vuex ialah pengurusan data global, digunakan untuk mengurus data global Vue hanya boleh memindahkan data antara komponen induk dan anak, dan ia menyusahkan disimpan dalam vuex dan dipanggil apabila digunakan.

Inti vuex:

  • nyatakan
  • mutasi
  • tindakan
  • getter

Penggunaan Vuex

Pasang dan gunakan vuex

Pemasangan

1. Pasang dalam projek

npm install vuex --save
Salin selepas log masuk

2. Buat fail store.js baharu

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
      //存放初始数据
    count: 0
  },
  mutations: {
      //存放修改数据的方法
    increment (state) {
      state.count++
    }
  }
})
Salin selepas log masuk

Gunakan data

Kaedah 1: Gunakan $store untuk memanggil

Gunakan ini.$store terus dalam komponen. Negeri memanggil data

this.$store.state.数据名
Salin selepas log masuk

Kaedah 2: Import mapState, kembangkan data dalam komponen dan petakannya apabila menggunakannya, hanya tulis count terus

//先导入mapState
import {mapState} from 'vuex'

computed:[
    ...mapState(['count'])
]
Salin selepas log masuk

Apabila beroperasi pada data, anda tidak boleh terus memanggil data keadaan Jika anda ingin mengubah suai data, anda perlu menulis kaedah dalam mutasi tujuannya adalah untuk memudahkan mencari tempat untuk menyelesaikan masalah

Fungsi dan penggunaan Mutasi

mutasi ialah kaedah untuk mengendalikan data

  mutations: {
//存放修改数据的方法
   add(state) {
     state.count++
   }
 }
Salin selepas log masuk

Kaedah 1:

mencetuskan fungsi mutasi, dan menggunakan commit untuk memanggil nama kaedah di dalam

ini. $store.commit. Ini adalah cara pertama untuk mencetuskan mutasi

methods:{
   handle(){
       this.$store.commit('add')
   }
}
Salin selepas log masuk

laluan parameter mutasiDua parameter boleh diluluskan dalam kaedah mutasi, yang pertama ialah keadaan, dan yang kedua ialah muatan parameter tersuai

  mutations: {
//存放修改数据的方法
   addN(state,N) {
     state.count+=N
   }
 }
Salin selepas log masuk

Panggilan adalah dalam komponen Dalam kaedah

methods:{
   handle2(){
       //触发mutation并传参
       this.$store.commit('addN',4)
   }
}
Salin selepas log masuk

gunakan kaedah dua

dan import petaMutasi fungsi dalam vuex ke dalam komponen

mapMutations(['sub']) ialah kaedah di dalam Pemetaan dengan kaedah dalam stor

... ialah pengendali pengembangan

import {mapMutations} from 'vuex'

methods:{
   //将方法名写在[]里  ['addN','sub']
   ...mapMutations(['sub'])
   btnhandle(){
       //调用时直接写this.方法名
       this.sub()
       //当传入参数时,直接写这个参数,不需要写state
       this.addN(4)
   }
}
Salin selepas log masuk

Nota : Anda tidak boleh menulis kod tak segerak dalam fungsi Mutasi seperti menulis fungsi pemasaan , walaupun halaman akan berubah, nilai status sebenar tidak akan berubah. Jadi terdapat penggunaan tindakan

Tindakan

Tindakan digunakan untuk mengendalikan tugas tak segerak.

Jika anda menukar data melalui operasi tak segerak, anda mesti menggunakan Tindakan dan bukannya Mutasi Walau bagaimanapun, dalam Tindakan, anda masih perlu menukar data secara tidak langsung dengan mencetuskan Mutasi

Ia adalah sama tahap sebagai mutasi dalam stor Tulis tindakan:{ } panggil kaedah mutasi di dalamnya, dan kemudian cetuskan Tindakan dalam komponen

  mutations: {
  //存放修改数据的方法
    add(state) {
      state.count++
    }
  },
  actions:{
      //context是上下文
      addAsync(context){
          setTimeout(()=>{
              //调用add方法,actions中不能直接修改state中的数据,只有mutation有这个权力
              context.commit('add')
          })
      }
  }
Salin selepas log masuk

Gunakan tindakan untuk menggunakan penghantaran dalam komponen untuk mencetuskan

btnHandle(){
    //dispatch专门触发action
    this.$store.dispatch('addAsync')
}
Salin selepas log masuk

Parameter yang diluluskan oleh tindakan

Tulis parameter formal dalam tindakan stor dan mutasi

  mutations: {
  //传参
    addN(state,n) {
      state.count+=n
    }
  },
  actions:{
      //context是上下文
      addAsync(context,n){
          setTimeout(()=>{
              //调用add方法,并传参
              context.commit('addN',n)
          })
      }
  }
Salin selepas log masuk

Tulis parameter sebenar dalam komponen

btnHandle(){
    //dispatch专门触发action,并传入参数
    this.$store.dispatch('addAsync',5)
}
Salin selepas log masuk

Yang kedua ialah mengembangkan dan memetakan Perkenalkan mapActions

//引入方法
import {mapActions} from 'vuex

methods:{
    //映射actions
    ...mapActions(['addAsync'])
    btnhandle(){
        //调用对应的actions
        this.addAsync()
    }
}
//也可以不写btnhandle方法了直接将映射的方法名写在点击操作上
Salin selepas log masuk

Nota: Panggil kaedah tindakan dalam komponen, gunakan commit dalam tindakan memanggil mutasi Kaedah

getter

  • Getter digunakan untuk memproses data dalam Store untuk membentuk data baharu. Data asal tidak akan diubah suai
  • Getter boleh memproses data sedia ada dalam Store untuk membentuk data baharu, serupa dengan sifat terkira Vue.
  • Apabila data dalam Store berubah, data dalam Getter juga akan berubah.
state:{
   count:0
},
getters:{
   showNum(state){
       return '当前最新的数据是:'+state.count
   }
}
Salin selepas log masuk

Kaedah panggilan pertama: this.$store .getters .Nama kaedah

this.$store.getters.showNum
Salin selepas log masuk

Kaedah panggilan kedua: pengembangan pemetaan, pemetaan dalam pengiraan

import {mapGetters} from 'vuex'

computed:{
   ...mapGetters(['showNum'])
}
Salin selepas log masuk

Ringkasan

  • state digunakan untuk menyimpan data awal dan melakukan pemulaan data Adalah lebih baik untuk tidak memanggil keadaan secara langsung dalam komponen
  • mutations digunakan kaedah simpan dan kendalikan data, tetapi operasi tak segerak tidak boleh dilakukan
  • actionsTerdapat kaedah untuk operasi tak segerak
  • getters digunakan untuk memproses data dalam Simpan untuk membentuk data baharu

Cadangan berkaitan: "tutorial vue.js"

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengurusan negeri global dalam vuejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan