Rumah hujung hadapan web tutorial js vuex怎么使用?vuex使用步骤详解(附代码)

vuex怎么使用?vuex使用步骤详解(附代码)

Apr 28, 2018 pm 01:37 PM
vuex

vuex的使用方法:1、用Vue脚手架工具构建好项目;2、利用npm包管理工具安装vuex;3、新建一个store文件夹,并在文件夹下新建“store.js”文件;4、在文件中引入vue和vuex。

vuex怎么使用?vuex使用步骤详解(附代码)

vuex怎么使用?这次给大家带来vuex使用步骤详解(附代码),vuex使用的注意事项有哪些,下面就是实战案例,一起来看一下。

什么是Vuex?

vuex是一个专门为vue.js设计的集中式状态管理架构。状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态。简单的说就是data中需要共用的属性。

引入Vuex(前提是已经用Vue脚手架工具构建好项目)

1、利用npm包管理工具,进行安装 vuex。在控制命令行中输入下边的命令就可以了。

 npm install vuex --save
Salin selepas log masuk

要注意的是这里一定要加上 –save,因为你这个包我们在生产环境中是要使用的。

2、新建一个store文件夹(这个不是必须的),并在文件夹下新建store.js文件,文件中引入我们的vue和vuex。 

 import Vue from 'vue';
 import Vuex from 'vuex';
Salin selepas log masuk
Salin selepas log masuk

3、使用我们vuex,引入之后用Vue.use进行引用。

 import Vue from 'vue';
 import Vuex from 'vuex';
Salin selepas log masuk
Salin selepas log masuk

通过这三步的操作,vuex就算引用成功了,接下来我们就可以尽情的玩耍了。

4、在main.js 中引入新建的vuex文件

 import storeConfig from './vuex/store'
Salin selepas log masuk

5、再然后 , 在实例化 Vue对象时加入 store 对象 :

 new Vue({
  el: '#app',
  router,
  store,//使用store
  template: '<App/>',
  components: { App }
 })
Salin selepas log masuk

初出茅庐 来个Demo

1、现在我们store.js文件里增加一个常量对象。store.js文件就是我们在引入vuex时的那个文件。

 const state = {
  count:1
 }
Salin selepas log masuk

2、用export default 封装代码,让外部可以引用。

 export default new Vuex.Store({
  state
 });
Salin selepas log masuk

3、新建一个vue的模板,位置在components文件夹下,名字叫count.vue。在模板中我们引入我们刚建的store.js文件,并在模板中用{{$store.state.count}}输出count 的值。

 <template>
  <p>
   <h2>{{msg}}</h2>
   <hr/>
   <h3>{{$store.state.count}}</h3>
  </p>
 </template>
 <script>
  import store from '@/vuex/store'
  export default{
   data(){
    return{
     msg:'Hello Vuex',
    }
   },
   store
  }
 </script>
Salin selepas log masuk

4、在store.js文件中加入两个改变state的方法。

const mutations={
  add(state){
   state.count+=1;
  },
  reduce(state){
   state.count-=1;
  }
 }
Salin selepas log masuk

这里的mutations是固定的写法,意思是改变的,所以你先不用着急,只知道我们要改变state的数值的方法,必须写在mutations里就可以了。

5、在count.vue模板中加入两个按钮,并调用mutations中的方法。

 <p>
  <button @click="$store.commit(&#39;add&#39;)">+</button>
  <button @click="$store.commit(&#39;reduce&#39;)">-</button>
 </p>
Salin selepas log masuk

这样进行预览就可以实现对vuex中的count进行加减了。

state访问状态对象

const state ,这个就是我们说的访问状态对象,它就是我们SPA(单页应用程序)中的共享值。

学习状态对象赋值给内部对象,也就是把stroe.js中的值,赋值给我们模板里data中的值。有三种赋值方式

一、 通过computed的计算属性直接赋值

computed属性可以在输出前,对data中的值进行改变,我们就利用这种特性把store.js中的state值赋值给我们模板中的data值。

 computed:{
  count(){
   return this.$store.state.count;
  }
 }
Salin selepas log masuk

这里需要注意的是return this.$store.state.count这一句,一定要写this,要不你会找不到$store的。这种写法很好理解,但是写起来是比较麻烦的,那我们来看看第二种写法。

二、通过mapState的对象来赋值

我们首先要用import引入mapState。  

import {mapState} from 'vuex';
Salin selepas log masuk

然后还在computed计算属性里写如下代码:

 computed:mapState({
   count:state=>state.count //理解为传入state对象,修改state.count属性
  })
Salin selepas log masuk

这里我们使用ES6的箭头函数来给count赋值。

三、通过mapState的数组来赋值

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

这个算是最简单的写法了,在实际项目开发当中也经常这样使用。

Mutations修改状态($store.commit( ))
Salin selepas log masuk

Vuex提供了commit方法来修改状态,我们粘贴出Demo示例代码内容,简单回顾一下,我们在button上的修改方法。

 <button @click="$store.commit(&#39;add&#39;)">+</button>
 <button @click="$store.commit(&#39;reduce&#39;)">-</button>
Salin selepas log masuk

store.js文件:

 const mutations={
  add(state){
   state.count+=1;
  },
  reduce(state){
   state.count-=1;
  }
 }
Salin selepas log masuk

传值:这只是一个最简单的修改状态的操作,在实际项目中我们常常需要在修改状态时传值。比如上边的例子,是我们每次只加1,而现在我们要通过所传的值进行相加。其实我们只需要在Mutations里再加上一个参数,并在commit的时候传递就就可以了。我们来看具体代码:

现在store.js文件里给add方法加上一个参数n。

 const mutations={
  add(state,n){
   state.count+=n;
  },
  reduce(state){
   state.count-=1;
  }
 }
Salin selepas log masuk

在Count.vue里修改按钮的commit( )方法传递的参数,我们传递10,意思就是每次加10.

 <p>
  <button @click="$store.commit(&#39;add&#39;,10)">+</button>
  <button @click="$store.commit(&#39;reduce&#39;)">-</button>
 </p>
Salin selepas log masuk

模板获取Mutations方法

实际开发中我们也不喜欢看到$store.commit( )这样的方法出现,我们希望跟调用模板里的方法一样调用。
 例如:@click=”reduce” 就和没引用vuex插件一样。要达到这种写法,只需要简单的两部就可以了:

1、在模板count.vue里用import 引入我们的mapMutations:   

 import { mapState,mapMutations } from 'vuex';
Salin selepas log masuk

2、在模板的<\script>标签里添加methods属性,并加入mapMutations

 methods:mapMutations([
   'add','reduce'
 ]),
Salin selepas log masuk

通过上边两部,我们已经可以在模板中直接使用我们的reduce或者add方法了,就像下面这样。

 <button @click="reduce">-</button>
Salin selepas log masuk

getters计算过滤操作

getters从表面是获得的意思,可以把他看作在获取数据之前进行的一种再编辑,相当于对数据的一个过滤和加工。你可以把它看作store.js的计算属性。

getters基本用法:

比如我们现在要对store.js文件中的count进行一个计算属性的操作,就是在它输出前,给它加上100.我们首先要在store.js里用const声明我们的getters属性。

 const getters = {
  count:function(state){
   return state.count +=100;
  }
 }
Salin selepas log masuk

写好了gettters之后,我们还需要在Vuex.Store()里引入,由于之前我们已经引入了state和mutations,所以引入里有三个引入属性。代码如下,

 export default new Vuex.Store({
  state,mutations,getters
 })
Salin selepas log masuk

在store.js里的配置算是完成了,我们需要到模板页对computed进行配置。在vue 的构造器里边只能有一个computed属性,如果你写多个,只有最后一个computed属性可用,所以要对上节课写的computed属性进行一个改造。改造时我们使用ES6中的展开运算符”…”。

 computed:{
  ...mapState(["count"]),
  count(){
   return this.$store.getters.count;
  }
 },
Salin selepas log masuk

需要注意的是,你写了这个配置后,在每次count 的值发生变化的时候,都会进行加100的操作。

用mapGetters简化模板写法

我们都知道state和mutations都有map的引用方法把我们模板中的编码进行简化,我们的getters也是有的,我们来看一下代码。

首先用import引入我们的mapGetters

 import { mapState,mapMutations,mapGetters } from 'vuex';
Salin selepas log masuk

在computed属性中加入mapGetters

 ...mapGetters(["count"])
Salin selepas log masuk

actions异步修改状态

actions和之前讲的Mutations功能基本一样,不同点是,actions是异步的改变state状态,而Mutations是同步改变状态。至于什么是异步什么是同步这里我就不做太多解释了,如果你不懂自己去百度查一下吧。

在store.js中声明actions

actions是可以调用Mutations里的方法的,我们还是继续在上节课的代码基础上进行学习,在actions里调用add和reduce两个方法。

 const actions ={
  addAction(context){
   context.commit('add',10)
  },
  reduceAction({commit}){
   commit('reduce')
  }
 }
Salin selepas log masuk

在actions里写了两个方法addAction和reduceAction,在方法体里,我们都用commit调用了Mutations里边的方法。细心的小伙伴会发现这两个方法传递的参数也不一样。

•ontext:上下文对象,这里你可以理解称store本身。
•{commit}:直接把commit对象传递过来,可以让方法体逻辑和代码更清晰明了。

模板中的使用

我们需要在count.vue模板中编写代码,让actions生效。我们先复制两个以前有的按钮,并改成我们的actions里的方法名,分别是:addAction和reduceAction。

  <p>
   <button @click="addAction">+</button>
   <button @click="reduceAction">-</button>
  </p>
Salin selepas log masuk

改造一下我们的methods方法,首先还是用扩展运算符把mapMutations和mapActions加入。

  methods:{
    ...mapMutations([ 
      'add','reduce'
    ]),
    ...mapActions(['addAction','reduceAction'])
  },
Salin selepas log masuk

你还要记得用import把我们的mapActions引入才可以使用。

增加异步检验

我们现在看的效果和我们用Mutations作的一模一样,肯定有的小伙伴会好奇,那actions有什么用,我们为了演示actions的异步功能,我们增加一个计时器(setTimeOut)延迟执行。在addAction里使用setTimeOut进行延迟执行。

  setTimeOut(()=>{context.commit(reduce)},3000);
  console.log('我比reduce提前执行');
Salin selepas log masuk

我们可以看到在控制台先打印出了‘我比reduce提前执行'这句话。

module模块组

随着项目的复杂性增加,我们共享的状态越来越多,这时候我们就需要把我们状态的各种操作进行一个分组,分组后再进行按组编写。那今天我们就学习一下module:状态管理器的模块组操作。

声明模块组:

在vuex/store.js中声明模块组,我们还是用我们的const常量的方法声明模块组。代码如下:

  const moduleA={
    state,mutations,getters,actions
  }
Salin selepas log masuk

声明好后,我们需要修改原来 Vuex.Stroe里的值:

  export default new Vuex.Store({
    modules:{a:moduleA}
  })
Salin selepas log masuk

在模板中使用

现在我们要在模板中使用count状态,要用插值的形式写入。 

<h3>{{$store.state.a.count}}</h3>
Salin selepas log masuk

如果想用简单的方法引入,还是要在我们的计算属性中rutrun我们的状态。写法如下:

  computed:{
    count(){
      return this.$store.state.a.count;
    }
  },
Salin selepas log masuk

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

操作render执行有哪些方法

js实现复制文本文件功能(步奏详解)

Atas ialah kandungan terperinci vuex怎么使用?vuex使用步骤详解(附代码). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Amalan terbaik untuk menggunakan Vuex untuk mengurus keadaan global dalam Vue2.x Amalan terbaik untuk menggunakan Vuex untuk mengurus keadaan global dalam Vue2.x Jun 09, 2023 pm 04:07 PM

Vue2.x ialah salah satu rangka kerja bahagian hadapan paling popular pada masa ini, yang menyediakan Vuex sebagai penyelesaian untuk mengurus keadaan global. Menggunakan Vuex boleh menjadikan pengurusan negeri lebih jelas dan lebih mudah diselenggarakan Amalan terbaik Vuex akan diperkenalkan di bawah untuk membantu pembangun menggunakan Vuex dengan lebih baik dan meningkatkan kualiti kod. 1. Gunakan keadaan organisasi modular Vuex menggunakan pepohon keadaan tunggal untuk mengurus semua keadaan aplikasi, mengekstrak keadaan daripada komponen, menjadikan pengurusan negeri lebih jelas dan lebih mudah difahami. Dalam aplikasi dengan banyak keadaan, modul mesti digunakan

Bagaimana untuk menyelesaikan masalah 'Ralat: [vuex] tidak mengubah keadaan kedai vuex di luar pengendali mutasi apabila menggunakan vuex dalam aplikasi Vue? Bagaimana untuk menyelesaikan masalah 'Ralat: [vuex] tidak mengubah keadaan kedai vuex di luar pengendali mutasi apabila menggunakan vuex dalam aplikasi Vue? Jun 24, 2023 pm 07:04 PM

Dalam aplikasi Vue, menggunakan vuex ialah kaedah pengurusan keadaan biasa. Walau bagaimanapun, apabila menggunakan vuex, kadangkala kita mungkin menghadapi mesej ralat sedemikian: "Ralat:[vuex]donotmutatevuexstorestateoutsidemutationhandlers Apakah maksud mesej ralat ini? Mengapa mesej ralat ini muncul? Bagaimana untuk membetulkan ralat ini? Artikel ini akan membincangkan isu ini secara terperinci. Mesej ralat mengandungi

Cara menggunakan Vuex dalam Vue3 Cara menggunakan Vuex dalam Vue3 May 14, 2023 pm 08:28 PM

Apakah yang Vuex lakukan? Vue rasmi: Alat pengurusan negeri Apakah pengurusan negeri yang perlu dikongsi di antara pelbagai komponen, dan ia responsif, satu perubahan, semua perubahan? Contohnya, beberapa maklumat status yang digunakan secara global: status log masuk pengguna, nama pengguna, maklumat lokasi geografi, item dalam troli beli-belah, dll. Pada masa ini, kami memerlukan alat sedemikian untuk pengurusan status global, dan Vuex ialah alat sedemikian. Pengurusan keadaan halaman tunggal Paparan–>Tindakan–>Lapisan paparan keadaan (paparan) mencetuskan tindakan (tindakan) untuk menukar keadaan (keadaan) dan bertindak balas semula untuk melihat lapisan (pandangan) vuex (Vue3.

Bagaimana untuk menyelesaikan masalah 'Ralat: [vuex] jenis tindakan yang tidak diketahui: xxx' apabila menggunakan vuex dalam aplikasi Vue? Bagaimana untuk menyelesaikan masalah 'Ralat: [vuex] jenis tindakan yang tidak diketahui: xxx' apabila menggunakan vuex dalam aplikasi Vue? Jun 25, 2023 pm 12:09 PM

Dalam projek Vue.js, vuex ialah alat pengurusan keadaan yang sangat berguna. Ia membantu kami berkongsi keadaan antara berbilang komponen dan menyediakan cara yang boleh dipercayai untuk mengurus perubahan keadaan. Tetapi apabila menggunakan vuex, kadangkala anda akan menghadapi ralat "Error:[vuex]unknownactiontype:xxx". Artikel ini akan menerangkan punca dan penyelesaian ralat ini. 1. Punca ralat Apabila menggunakan vuex, kita perlu menentukan beberapa tindakan dan mu

Ketahui lebih lanjut tentang prinsip pelaksanaan vuex Ketahui lebih lanjut tentang prinsip pelaksanaan vuex Mar 20, 2023 pm 06:14 PM

Apabila ditanya dalam temu bual tentang prinsip pelaksanaan vuex, bagaimanakah anda harus menjawab? Artikel berikut akan memberi anda pemahaman yang mendalam tentang prinsip pelaksanaan vuex. Saya harap ia akan membantu anda!

Bagaimana untuk menyelesaikan masalah 'TypeError: Tidak dapat membaca harta 'xxx' undefined' apabila menggunakan vuex dalam aplikasi Vue? Bagaimana untuk menyelesaikan masalah 'TypeError: Tidak dapat membaca harta 'xxx' undefined' apabila menggunakan vuex dalam aplikasi Vue? Aug 18, 2023 pm 09:24 PM

Menggunakan Vuex dalam aplikasi Vue adalah operasi yang sangat biasa. Walau bagaimanapun, kadangkala apabila menggunakan Vuex, anda akan menemui mesej ralat "TypeError: Cannotreadproperty'xxx'ofundefined". Sebab masalah ini sebenarnya sangat jelas Ia adalah kerana apabila memanggil atribut Vuex tertentu, atribut ini tidak ditetapkan dengan betul.

Cara menggunakan vuex dalam vue3+vite Cara menggunakan vuex dalam vue3+vite Jun 03, 2023 am 09:10 AM

Langkah khusus: 1. Pasang vuex (vue3 disyorkan 4.0+) pnpmivuex-S2, konfigurasikan konfigurasi global importstorefrom'@/store'//hx-app dalam main.js constapp=createApp(App)app.use(store) 3 . Cipta folder dan fail baharu yang berkaitan Di sini, konfigurasikan berbilang js di dalam vuex yang berbeza untuk meletakkan halaman dan fail yang berbeza, kemudian gunakan fail teras Import.meta.glob daripada

Bagaimana untuk menggunakan vuex untuk komunikasi komponen dalam Vue? Bagaimana untuk menggunakan vuex untuk komunikasi komponen dalam Vue? Jul 19, 2023 pm 06:16 PM

Bagaimana untuk menggunakan vuex untuk komunikasi komponen dalam Vue? Vue ialah rangka kerja JavaScript popular yang menggunakan model pembangunan berasaskan komponen, membolehkan kami membina aplikasi yang kompleks dengan lebih mudah. Dalam proses pembangunan komponen Vue, kita sering menghadapi situasi yang memerlukan komunikasi antara komponen yang berbeza. Vuex ialah alat pengurusan negeri yang disyorkan secara rasmi oleh Vue Ia menyediakan pengurus storan berpusat dan menyelesaikan masalah komunikasi antara komponen. Artikel ini akan memperkenalkan cara menggunakan Vuex untuk komunikasi komponen dalam Vue

See all articles