iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >vuex的Mutation怎么使用
  • 190
分享到

vuex的Mutation怎么使用

2024-04-02 19:04:59 190人浏览 安东尼
摘要

这篇“Vuex的Mutation怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vu

这篇“Vuex的Mutation怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vuex的Mutation怎么使用”文章吧。

Vuex - Mutation

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation. 这是官方文档的原文. 不要通过其他方式去修改store中的状态, 这点非常关键, 那样做会使状态不收我们管控的.

在stroe中定义一个mutation, 作用是将count++.

mutations:{

addCount(state){

state.count++;

}

},

mutation的第一个参数是state, 通过他我们能拿到state中定义的状态.

在组件内调用定义的mutation(路由1). 通过this.$store.commit("addCount")触发store中的addCount, 从而改变count的值. 这样在其他页面引用的count都会跟着改变.

methods:{

    filterAgeGt18(arr){

        return arr.filter((ele, ind) => {

            return ele.age > 18;

        });

    },

    addCountInR1(){

        this.$store.commit("addCount");

    }

}

给mutation传参, 在改变store中的状态时, 可能需要传递进参数. 再定义一个mutation:addCountWithParams, 实现将count的值与传递的参数相加.

mutations:{

addCount(state){

state.count++;

},

addCountWithParams(state, params){

state.count += params;

},

pushDataToArrat(state){

state.array.push({

name:"sunq",

age:100

})

}

},

组件内传递参数调用(路由2.1).

methods:{

    addLocalCount(){

        this.localCount++;

    },

    addCount(){

        this.$store.commit("addCountWithParams", Math.ceil(Math.random() * 20));

    }

},

传入一个随机的1-20的整数, 与count相加.

官方推荐传递一个对象参数, 实践中也确实这样, 避免了对参数个数的控制, 而且这样更能和mutation的对象方式的提交组合使用, 写法更简洁.

再定义一个mutation, 传递一个对象参数.

mutations:{

addCount(state){

state.count++;

},

addCountWithParams(state, params){

state.count += params;

},

addCountWithObjParams(state, params){

state.count += params.num;

}

},

在组件中使用对象的方式调用addCountWithObjParams(路由3).

methods:{

    addCount(){

        //普通方式提交

        this.$store.commit("addCountWithObjParams", {

            num: Math.ceil(Math.random() * 10)

        });

        //对象方式提交

        this.$store.commit({

            type: "addCountWithObjParams",

            num: Math.ceil(Math.random() * 10)

        });

    }

},

上面代码提交了两次, 分别使用普通方式提交和对象风格提交addCountWithObjParams.

Mutation 需遵守 Vue 的响应规则, 所以需要注意两点,

mutation改变的变量需先在state中声明好,

对于对象属性的增加, 不能使用普通方式, 如 o1.k1 = 12; 这样的增加属性虽然可以实现效果, 但是vue的响应式是检测不到的, 那么关于此对象的双向数据就不会触发.

举个栗子.

state中增加一个对象aObject.

state:{

count:13,

anotherCount:17,

aObject:{

a:147

}

},

组件内获得对象, 并使用v-for将所有键值对渲染(路由3).

使用mapState获得:

computed:mapState(["anotherCount","count", "aObject"])

页面渲染:

<ul>

    <li v-for="(v,k) in aObject">store中的对象aObject的{{k}}的值 : {{v}}</li> 

</ul>

增加一个mutation, 给对象新增一个属性.

mutations:{

addCount(state){

state.count++;

},

addCountWithParams(state, params){

state.count += params;

},

addCountWithObjParams(state, params){

state.count += params.num;

},

changeAvalue(state){

state.aObject.b = 149;

console.log(state.aObject);

}

},

组件内commit这个mutation(路由3).

changeA(){

    this.$store.commit({

        type: "changeAvalue"

    });

}

效果是控制台打印的对象已经有b这个属性了, 但是页面的渲染却没有变化.

正确的姿势应该是用Vue提供的set方法.修改changAvalue这个mutation. Vue.set()

changeAvalue(state){

// state.aObject.b = 149;

Vue.set(state.aObject, "b", 149);

console.log(state.aObject);

},

再次执行提交mutation的操作页面的列表渲染会跟着更新.

辅助函数的使用. mapMutations (路由4).

和state, getter一样, mutatin也有一个辅助函数. 回顾一下上面的逻辑, 我们在点击事件的事件处理函数中提交mutation, 那为什么不直接将mutation作为点击事件的事件处理函数呢, 这样不就少了一层函数的嵌套. mapMutations就可以实现这点.

mapMutations可以将mutation映射到组件内的methods中, 同mapGetters一样, 可以传递数组, 将mutation映射到组件内的同名method上, 也可以传递对象, 给mutation起一个组件内的别名.

methods:{

    ...mapMutations([

      'addCount',

    ]),

    ...mapMutations({

      add: 'addCount'

    })

},

这样可将addCount和add直接赋给按钮的点击事件, 即可实现将count加1的操作.

<div>

    <h3>mutation的辅助函数的使用</h3>

    <div>

        <button @click="addCount">增加Count</button>

        <button @click="add">还是增加Count</button>

    </div>

    <div>

        <span class="count">count的值 : {{count}}</span>

    </div>

</div>

mutation所做的操作都是同步的, mutation不能进行异步的操作state中的变量,

以上就是关于“vuex的Mutation怎么使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网VUE频道。

--结束END--

本文标题: vuex的Mutation怎么使用

本文链接: https://www.lsjlt.com/news/92012.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vuex的Mutation怎么使用
    这篇“vuex的Mutation怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vu...
    99+
    2022-10-19
  • vuex中mutation和action如何使用
    vuex中mutation和action如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、mutation在vue 中,只有mut...
    99+
    2022-10-19
  • vuex中怎么利用mutation或action传参
    这篇文章将为大家详细讲解有关vuex中怎么利用mutation或action传参,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言在vuex中提交 muta...
    99+
    2022-10-19
  • vuex mutation action同级调用方式是什么
    本篇内容介绍了“vuex mutation action同级调用方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2023-06-29
  • Vue的Vuex怎么使用
    这篇文章主要讲解了“Vue的Vuex怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue的Vuex怎么使用”吧!优缺点优点响应式属于 vue 生态一环,,能够触发响应式的渲染页面更新...
    99+
    2023-06-28
  • Vuex中的API怎么使用
    今天小编给大家分享一下Vuex中的API怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。构造器选项state类型: O...
    99+
    2023-07-04
  • vuex中的Modules怎么使用
    这篇文章主要介绍了vuex中的Modules怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vuex中的Modules怎么使用文章都会有所收获,下面我们一起来看看吧。1 、什么是模块ModulesVuex...
    99+
    2023-06-30
  • vue3.2中的vuex怎么使用
    这篇文章主要介绍“vue3.2中的vuex怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue3.2中的vuex怎么使用”文章能帮助大家解决问题。Vuex 中有以下几个核心概念:State:...
    99+
    2023-07-06
  • vue中vuex怎么使用
    这篇文章将为大家详细讲解有关vue中vuex怎么使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue概念:vuex 是 Vue 配套的 公共数据管理工具,它可以把一些...
    99+
    2022-10-19
  • VueX怎么安装使用
    本篇内容主要讲解“VueX怎么安装使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VueX怎么安装使用”吧!1、安装vuex依赖包npm install vuex ...
    99+
    2023-06-28
  • Vue3中Vuex怎么使用
    本篇内容介绍了“Vue3中Vuex怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Vuex是做什么的?Vue官方:状态管理工具状态管理...
    99+
    2023-07-02
  • vuex怎么用
    小编给大家分享一下vuex怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是Vuex?vuex是一个专门为vue.js设...
    99+
    2022-10-19
  • 怎么用vuex
    这篇文章给大家分享的是有关怎么用vuex的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先贴上官方文档,https://vuex.vuejs.org/guide/modules....
    99+
    2022-10-19
  • Vue3怎么使用Vuex的mapState与mapGetters
    今天小编给大家分享一下Vue3怎么使用Vuex的mapState与mapGetters的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-07-05
  • vuex在vue3中怎么使用
    这篇文章主要介绍“vuex在vue3中怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vuex在vue3中怎么使用”文章能帮助大家解决问题。在vue3中,vuex用于储存和管理所有组件的状态,...
    99+
    2023-06-29
  • Vuex是什么及怎么使用
    这篇文章主要讲解了“Vuex是什么及怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vuex是什么及怎么使用”吧!一.Vuex是什么?为什么要用它?vuex官方解释Vuex 是一个专为...
    99+
    2023-07-04
  • vuex中store的action和mutations怎么使用
    本文小编为大家详细介绍“vuex中store的action和mutations怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“vuex中store的action和mutations怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-06-30
  • super-vuex怎么用
    小编给大家分享一下super-vuex怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!vuex与super-vuexsupe...
    99+
    2022-10-19
  • Vuex命名空间namespaced怎么使用
    这篇文章主要介绍“Vuex命名空间namespaced怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vuex命名空间namespaced怎么使用”文章能帮助大家解决问题。在项目中,如果需要用...
    99+
    2023-07-05
  • Vue.js中Vuex怎么用
    小编给大家分享一下Vue.js中Vuex怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、安装并引入 Vuex项目结构:首...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作