我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vuex怎么在非组件中调用mutations方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vuex怎么在非组件中调用mutations方法

这篇文章主要讲解了“vuex怎么在非组件中调用mutations方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vuex怎么在非组件中调用mutations方法”吧!

在非组件中调用mutations方法

一般情况下调用 mutations.js 中的方法都是在组件中,如果想在非组件中调用,则需要使用如下方式

在组件中调用

import {mapMutations} from 'vuex'import {SET_IS_LOGIN} from 'store/mutation-types'export default {    methods: {        ...mapMutations({            set_is_login: SET_IS_LOGIN        }),        init() {            this.set_is_login(true)        }    }}

在非组件中调用

import store from 'store'import {SET_IS_LOGIN} from 'store/mutation-types'function init() {    store.commit(SET_IS_LOGIN, true)}

vuex的mutations属性

mutations属性介绍

是唯一一种方式来修改state中的状态的;在组件的自定义方法中,使用this.$store.commit(‘对应mutations中的方法’, 新的值)方法,把新的值提交给mutations中相对应的方法,mutations属性中的每个方法中有两个参数,分比为state和payload;state其实就是vuex中的state属性,payload叫做mutations的载荷,其实就是传过来的值。一般payload传的是一个对象,这样可以包含多个字段并且记录的 mutation 会更易读:

mutations: {  increment (state, payload) {    state.count += payload.amount  }}
store.commit('increment', {  amount: 10})

对象风格的提交方式

提交 mutation 的另一种方式是直接使用包含 type 属性的对象:

store.commit({  type: 'increment',  amount: 10})

当使用对象风格的提交方式,整个对象都作为载荷传给 mutation 函数,因此 handler 保持不变:

mutations: {  increment (state, payload) {    state.count += payload.amount  }}

使用常量替代 Mutation 事件类型

使用常量替代 mutation 事件类型在各种 Flux 实现中是很常见的模式。这样可以使 linter 之类的工具发挥作用,同时把这些常量放在单独的文件中可以让你的代码合作者对整个 app 包含的 mutation 一目了然:

// mutation-types.jsexport const SOME_MUTATION = 'SOME_MUTATION'
// store.jsimport Vuex from 'vuex'import { SOME_MUTATION } from './mutation-types'
const store = new Vuex.Store({  state: { ... },  mutations: {    // 我们可以使用 ES2015 风格的计算属性命名功能来使用一个常量作为函数名    [SOME_MUTATION] (state) {      // mutate state    }  }})

用不用常量取决于你——在需要多人协作的大型项目中,这会很有帮助。但如果你不喜欢,你完全可以不这样做。

Mutation 必须是同步函数

一条重要的原则就是要记住 mutation 必须是同步函数。为什么?请参考下面的例子:

mutations: {  someMutation (state) {    api.callAsyncMethod(() => {      state.count++    })  }}

现在想象,我们正在 debug 一个 app 并且观察 devtool 中的 mutation 日志。每一条 mutation 被记录,devtools 都需要捕捉到前一状态和后一状态的快照。然而,在上面的例子中 mutation 中的异步函数中的回调让这不可能完成:因为当 mutation 触发的时候,回调函数还没有被调用,devtools 不知道什么时候回调函数实际上被调用——实质上任何在回调函数中进行的状态的改变都是不可追踪的。

在组件中提交 Mutation

你可以在组件中使用 this.$store.commit(‘xxx’) 提交 mutation,或者使用 mapMutations 辅助函数将组件中的 methods 映射为 store.commit 调用(需要在根节点注入 store)。

import { mapMutations } from 'vuex'export default {  // ...  methods: {    ...mapMutations([      'increment', // 将 `this.increment()` 映射为 `this.$store.commit('increment')`      // `mapMutations` 也支持载荷:      'incrementBy' // 将 `this.incrementBy(amount)` 映射为 `this.$store.commit('incrementBy', amount)`    ]),    ...mapMutations({      add: 'increment' // 将 `this.add()` 映射为 `this.$store.commit('increment')`    })  }}

感谢各位的阅读,以上就是“vuex怎么在非组件中调用mutations方法”的内容了,经过本文的学习后,相信大家对vuex怎么在非组件中调用mutations方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vuex怎么在非组件中调用mutations方法

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

下载Word文档

猜你喜欢

vuex怎么在非组件中调用mutations方法

这篇文章主要讲解了“vuex怎么在非组件中调用mutations方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vuex怎么在非组件中调用mutations方法”吧!在非组件中调用muta
2023-06-29

vuex中mutations怎么调用

这篇文章主要介绍vuex中mutations怎么调用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mutations的调用方法直接通过$store.commit调用

Vue中一个组件调用其他组件的方法详解(非父子组件)

vue中最常见子父组件产值,大家一定都很熟悉,最近项目中碰到非父组件中调用子组件方法的问题,这篇文章主要给大家介绍了关于Vue中一个组件调用其他组件的方法(非父子组件),需要的朋友可以参考下
2022-11-13

vue怎么调用组件方法

这篇文章主要介绍了vue怎么调用组件方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue怎么调用组件方法文章都会有所收获,下面我们一起来看看吧。在Vue中,组件的方法可以在组件中定义。我们可以使用Vue.e
2023-07-05

React父组件怎么调用子组件的方法

调用方法:1、类组件中的调用可以利用React.createRef()、ref的函数式声明或props自定义onRef属性来实现;2、函数组件、Hook组件中的调用可以利用useImperativeHandle或forwardRef抛出子组件ref来实现。
2023-05-14

Vue3 封装扩展并简化Vuex在组件中的调用问题

这篇文章主要介绍了Vue3 封装扩展并简化Vuex在组件中的调用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-01-28

怎么在Java中调用方法

这期内容当中小编将会给大家带来有关怎么在Java中调用方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、方法调用方法调用的唯一目的:确定要调用哪一个方法方法调用分为解析调用和分派调用二、非虚方法与虚方
2023-06-15

详解Vue3 父组件调用子组件方法($refs 在setup()、<script setup> 中使用)

这篇文章主要介绍了Vue3 父组件调用子组件方法($refs 在setup()、<script setup> 中使用),在vue2中ref被用来获取对应的子元素,然后调用子元素内部的方法,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
2022-11-13

怎么在html中调用js方法

这篇文章给大家介绍怎么在html中调用js方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方便,适合初学前端开发者使用。2、可扩展性:超
2023-06-14

vuejs调用组件的方法是什么

这篇文章主要讲解了“vuejs调用组件的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vuejs调用组件的方法是什么”吧!vuejs调用组件的方法:1、通过v-model或者.sy
2023-06-25

C#中COM组件的ASP调用方法是什么

这篇文章主要介绍“C#中COM组件的ASP调用方法是什么”,在日常操作中,相信很多人在C#中COM组件的ASP调用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中COM组件的ASP调用方法是什么
2023-06-17

C#中怎么调用Active组件

本篇文章给大家分享的是有关C#中怎么调用Active组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#调用Active组件本程序中:建立类库添加组件类后托放:label 、
2023-06-17

怎么在PHP中调用对象方法

本篇内容介绍了“怎么在PHP中调用对象方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!对象方法的基本语法在PHP中,我们可以使用“->”符
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录