二、怎么简单使用vuex

这篇具有很好参考价值的文章主要介绍了二、怎么简单使用vuex。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前提步骤:

1、 搭建一个vue2项目
2、 修改App.vue文件;修改App.vue组件里面引入的子组件内容(在src文件夹下新建pages文件夹,新建index.vue页面,以供使用);

正式开始vuex的相关操作:

一、安装vuex:

npm install vuex --save

注意,以上的命令安装的会是最新版本的。如果没有指定版本,npm会默认获取最新版本。但是vue2.0只能安装vuex3.x版本,最高3.6.2,vue3.0才能装vuex4.x版本。因此如果是vue2项目要指定版本:

npm install vuex@3.6.2 --save

二、项目配置VUEX:

项目src目录下创建store目录,并在store下创建index.js,初始化Vuex。

Store文件夹中主要js如下:
二、怎么简单使用vuex,# vuex,# 2023面试准备,vue,vue,vue.js


三、创建相关文件:

1、state

概念:
state:存储应用状态数据的对象,与vue中data类似

步骤:
(1)比如创建state.js文件的内容如下:

export default {
    state1: "状态1"
}

(2)在store文件夹下的index.js文件下引入:

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

import state from '@/store/state.js'

const store = new Vuex.Store({
    // 用来存入状态
    state: state
})

export default store

(3)接下来,将store挂载到vue实例中,在src文件夹下的main.js文件中添加:

import store from './store'
new Vue({
  …
  store,
}).$mount('#app')

最后代码呈现如下:
二、怎么简单使用vuex,# vuex,# 2023面试准备,vue,vue,vue.js

(4)在组件中使用vuex。可直接使用或者使用辅助函数
1>直接使用:this.$store.state.xxx


<template>
    <div>
        状态数据1:{{this.$store.state.state1}}
	</div>
</template>

2>使用辅助函数:mapState

<template>
    <div>
        状态数据1:{{state1}}
    </div>
</template>

<script>
   import { mapState } from 'vuex'
    export default {
       computed:{
           ...mapState(['state1']) // 使用对象展开运算符将此对象混入到外部对象中
       }
       // 没使用对象展开运算符的写法为:
       // computed: mapState(['state1'])
    }
</script>

2、getters

概念:
getters: 类似vue的计算属性,store中数据的变化,getters的数据也会发生变化

步骤:
(1)创建getters.js文件内容可如下:

export default {
  numSum:(state)=>{
    var sum=0;
    for(var i=0; i<state.numbers.length; i++){
      sum +=state.numbers[i]
    }
    return sum;
  }
}

(2)在store文件夹下的index.js文件下引入(参照引入state.js)
(3)将store挂载到vue实例中(state已经实现了这步操作)
(4)在组件中使用(参考state里面数据的使用,使用辅助函数mapGetters也类似)


3、mutations

概念:
mutations: 提交mutation来修改store中的状态,同步操作

步骤:
(1)创建mutations.js文件内容可如下:

export default {
    mutEditStat1(state){
        state.state1 = '状态111改变了'
    }
}

(2)在store文件夹下的index.js文件下引入(参照引入state.js)
(3)将store挂载到vue实例中(state已经实现了这步操作)
(4)在组件中使用:
1>直接使用:

<template>
    <div>
        {{state1}}
        <button @click="update1()">点击改变状态</button>
    </div>
</template>

<script>
    export default {
        methods: {
            update1(){
               this.$store.commit('mutEditStat1') // 唤醒一个 mutation 处理函数mutEditStat1
            }
        }
    }
</script>

2>使用mapMutations辅助函数:

<template>
    <div>
        {{state1}}
        <button @click="update1()">点击改变状态</button>
    </div>
</template>

<script>
import { mapMutations } from 'vuex'
    export default {
        methods: {
			...mapMutations(['mutEditStat1']),  
            update1(){
               this.mutEditStat1()
			 }
        }
    }
</script>

若带有参数,
Mutations文件内容可如下:

export default {
    mutEditStat2(state,req){
	    state.state2="状态2" + req;
	}
}

其它内容和无参数的内容一样,只是在用的时候传参:

update3(){
    this.mutEditStat2('传参过来的')
}

4、actions

概念:

actions:与mutations类似,提交修改state的行为,处理异步任务(提交的是mutation,不是直接修改状态)

步骤:
(1)创建ations.js文件内容可如下:

export default {
    actEditStat1(context){
        setTimeout(()=>{
            context.commit("mutEditStat1")
        }, 3000)  //我们此时就可以在 action 内部执行异步操作了,解决mutation 必须同步执行的问题
    }
	// 带参数
	actEditStat1(context,num){
	      setTimeout(()=>{
	        context.commit("mutEditStat1")
	      }, 3000)
	    console.log(num)
	}

}

(2)在store文件夹下的index.js文件下引入(参照引入state.js)
(3)将store挂载到vue实例中(state已经实现了这步操作)
(4)在组件中使用:
1>直接使用:

<template>
    <div>
        {{state1}}
        <button @click="update()">actions提交mutation更新状态</button>

    </div>
</template>

<script>
    export default {
        methods: {
         update(){
			this.$store.dispatch('actEditStat1') //分发 Action。Action 通过 store.dispatch 方法触发
			// 若是带参数:
			// this.$store.dispatch('actEditStat1',22)
          }
        }
    }
</script>

使用mapActions辅助函数:

<template>
    <div>
        {{state1}}
        <button @click="update1()">点击改变状态</button>
    </div>
</template>

<script>
import { mapActions } from 'vuex'
    export default {
        methods: {
			...mapActions(['actEditStat1']),  // `this.mutEditStat1()` 映射为 `this.$store.commit('mutEditStat1')`
            update1(){
               this.actEditStat1()
 			}
        }
    }
</script>

注意: mutation 必须是同步函数

辅助函数总结:

mapState和mapGetters写在computed中,mapMutations和mapActions写在methods中


5、modules

概念:

modules:模块化状态管理,为了开发大型项目,方便状态管理而使用的
使用后目录大概如下:
二、怎么简单使用vuex,# vuex,# 2023面试准备,vue,vue,vue.js

模块内内容没变化,主要需要修改的index.js文件内容:

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

import userInfo from '@/store/modules/userInfo.js'
import shopCart from '@/store/modules/shopCart.js'

export default new Vuex.Store({
  state: {},
  getters: {},
  mutations: {},
  actions: {},
  modules:{
    userInfo,
    shopCart
  }
})

shopCart.js文件内容:

import state from '@/store/modules/shopCart/state.js'
import getters from '@/store/modules/shopCart/getters.js'
import mutations from '@/store/modules/shopCart/mutations.js'
import actions from '@/store/modules/shopCart/actions.js'

export default {
  namespaced: true, //开启命名空间

  state:state, 

  getters: getters, 

  mutations: mutations, 

  actions: actions
}

userInfo.js文件内容类似。自行修改。

组件中使用示例1:

export default {
  methods: {
    login(){
      if(this.$store.state.userInfo.isLogin){ // modules中直接使用state: this.$store.state.模块名.xxx;
        this.$store.commit('userInfo/logout'); // modules中直接使用mutations:this.$store.commit('模块名/mutation名', 参数);
      }else{
        this.$store.commit('userInfo/login');
      }
    }
  },
}

示例2:

computed:{
  	// modules中使用mapState辅助函数:
	// computed: { 
	//       ...mapState('模块名', ['xxx']), 
	//       ...mapState('模块名', {'新名字': 'xxx'})
	// }
    ...mapState({ 
      userInfo:state=>state.userInfo
    })

  },

示例3:文章来源地址https://www.toymoban.com/news/detail-730935.html

 computed:{
 	// modules中使用mapGetters辅助函数:
	// computed: { 
	//       ...mapGetters('模块名', ['xxx']), 
	//       ...mapGetters('模块名', {'新名字': 'xxx'})
	// }
    ...mapGetters("shopCart", {   // 对象形式 
      countGoods: "countGoods"
    }),
  },

到了这里,关于二、怎么简单使用vuex的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vuex前端开发,getters是什么?怎么调用?简单的案例操作

    vuex前端开发,getters是什么?怎么调用?简单的案例操作! 下面通过一些简单的案例,来了解一下,vuex当中的getters到底是什么意思,有哪些实际的操作案例。 Vuex的getters主要用于对 store中的state进行计算或过滤 ,类似于Vue组件中的 计算属性 。它可以对state进行一些处理,然后

    2024年01月19日
    浏览(38)
  • 2023JAVA 面试题全集(超全面!超系统!超实用!)早做准备,早上岸!

    大家好,最近有不少小伙伴在后台留言,近期的面试越来越难了,要背的八股文越来越多了,考察得越来越细,越来越底层,明摆着就是想让我们徒手造航母嘛!实在是太为难我们这些程序员了。 这不,为了帮大家节约时间,给大家搞来了今年上半年碰到的大厂 Java 面试题合

    2024年02月08日
    浏览(87)
  • Linux下安装Elasticsearch(1),面试字节跳动Linux运维工程师该怎么准备

    network.host: 0.0.0.0 # 绑定到0.0.0.0,允许任何ip来访问 我们把data和logs目录修改指向了elasticsearch的安装目录。但是这两个目录并不存在,因此我们需要创建出来。 进入elasticsearch的根目录,然后创建: mkdir data mkdir logs 目前我们是做的单机安装,如果要做集群,只需要在这个配置

    2024年04月25日
    浏览(40)
  • Vue3中简单使用Mock.js

    mock.js简介   官方链接:Mock.js (mockjs.com)         前端开发人员用来模拟虚拟数据,拦截ajax请求,方便模拟后端接口 安装 使用         本文主要介绍在Vue项目中使用mock.js,包括axios发送请求与请求简单封装 创建mock文件夹,新建index.js文件         模拟数据可自己手动

    2024年02月02日
    浏览(44)
  • vuex是什么?怎么使用?哪种功能场景使用它?

    Vuex是Vue.js官方推荐的状态管理库,用于在Vue应用程序中管理和共享状态。它基于Flux架构和单向数据流的概念,将应用程序的状态集中管理,使得状态的变化更可追踪、更易于管理。Vuex提供了一个全局的状态树,以及一些用于修改状态的方法。 使用Vuex的一般步骤如下: 安装

    2024年01月17日
    浏览(53)
  • 【Vue】使用print.js插件实现打印预览功能,超简单

    目录 一、实现效果  二、实现步骤 【1】安装插件 【2】在需要打印的页面导入 【3】在vue文件中需要打印的部分外层套一层div,给div设置id。作为打印的区域 【4】在打印按钮上添加打印事件 【5】在methods中添加点击事件 三、完整代码   print.js插件,可以打印html、pdf、json数

    2024年02月14日
    浏览(42)
  • Vue.js 3.x Composition APIs 及简单使用

    源码组织方式的变化 Composition API 性能提升 Vite 源码全部采用 TS 重写,组织方式也发生变化,使用 Monorepo 的方式来组织项目的结构,把独立的功能模块都提取到不同的包中。 虽然重写,但是 90% 都兼容 2.x 的API,根据社区反馈,增加了 Composition API,组合式API,旨在解决开发超

    2024年02月08日
    浏览(37)
  • vue~vuex的使用

    Vuex 和本地存储(如 localStorage )以及 cookie 存储(如 document.cookie )之间有一些关系,但它们是不同的概念,用于不同的目的。 Vuex : Vuex 是 Vue.js 的官方状态管理库,用于在 Vue.js 应用程序中管理应用程序的全局状态。 Vuex 主要用于在前端应用程序中存储和管理各种状态,包

    2024年02月09日
    浏览(38)
  • uniapp小程序因使用 uni.switchTab传不了值使用vuex(简单明了)

    里面写如以下代码

    2024年02月20日
    浏览(39)
  • 【Vue】使用 Vuex 作为状态管理

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它使用单一状态树,这意味着这个对象包含了全部的应用层级状态,并且以一种相对集中的方式存在。这也意味着,通常单个项目中只有一个 Vuex store。Vuex 的核心概念和功能包括: 状态(State) :Vuex 使用单一状态树

    2024年01月23日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包