热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vuexmutations,vuex中mutation方法互调

vuexmutations,vuex中mutation方法互调本文主要介绍vuex如何在非组件中调用突变方法,有很好的参考价值

  vuex mutations,vuex中mutation方法互调

  本文主要介绍vuex如何在非组件中调用突变方法,有很好的参考价值,希望对大家有所帮助。如有错误或不足之处,请不吝赐教。

  

目录

  在非组件中调用突变方法,在非组件中调用vuex的突变属性,突变属性引入对象样式的提交方法,用常量代替突变事件类型突变必须是同步函数才能在组件中提交突变。

  

在非组件中调用mutations方法

  通常,在组件中调用mutations.js中的方法。如果要在非组件中调用它们,需要使用以下方法。

  

在组件中调用

  从“vuex”导入{ mapMutations }

  从“存储/变异类型”导入{SET_IS_LOGIN}

  导出默认值{

  方法:{

  .地图突变({

  集合_是_登录:集合_是_登录

  }),

  init() {

  this.set_is_login(true)

  }

  }

  }

  

在非组件中调用

  从“商店”导入商店

  从“存储/变异类型”导入{SET_IS_LOGIN}

  函数init() {

  store.commit(SET_IS_LOGIN,true)

  }

  

vuex的mutations属性

  

mutations属性介绍

  是在状态中修改状态的唯一方法;在组件的自定义方法中,使用此。$store.commit((对应于突变中的方法,新值)方法向突变中的对应方法提交新值。突变属性中的每个方法都有两个参数,即状态和有效负载;实际上,state是vuex中的state属性,有效载荷称为突变的有效载荷,实际上是传递的值。通常,payload传输一个对象,因此它可以包含多个字段,并且记录的突变将更具可读性:

  突变:{

  增量(状态、有效负载){

  state.count=有效载荷.数量

  }

  }

  store.commit(increment ,{

  数量:10

  })

  

对象风格的提交方式

  提交变异的另一种方法是直接使用包含类型属性的对象:

  store.commit({

  类型:增量,

  数量:10

  })

  当使用对象样式提交方法时,整个对象作为有效载荷传递给突变函数,因此处理程序保持不变:

  突变:{

  增量(状态、有效负载){

  state.count=有效载荷.数量

  }

  }

  

使用常量替代 Mutation 事件类型

  使用常量代替突变事件类型是各种Flux实现中的常见模式。这样可以让linter这样的工具工作,同时,把这些常量放在一个单独的文件中,可以让你的代码协作者一眼就知道整个app中包含的突变:

  //突变类型. js

  export const SOME _ MUTATION= SOME _ MUTATION

  //store.js

  从“vuex”导入Vuex

  从导入{ SOME_MUTATION }。/突变类型

  const store=new Vuex。商店({

  状态:{.},

  突变:{

  //我们可以使用ES2015风格的计算属性命名函数来使用一个常数作为函数名

  [某些_突变](状态){

  //改变状态

  }

  }

  })

  不使用常量由你决定。这在需要多人协作的大型项目中很有帮助。但如果你不喜欢,也可以不喜欢。

  

Mutation 必须是同步函数

  一个重要的原则是记住突变必须是同步函数。为什么?请参考以下例子:

  突变:{

  某些突变(状态){

  api.callAsyncMethod(()={

  状态.计数

  })

  }

  }

  现在,假设我们正在调试一个应用程序,并在devtool中观察突变日志。每一个突变都被记录下来,devtools需要捕捉前一个状态和下一个状态的快照。但是,在上面的例子中,mutation中异步函数中的回调使得这一点变得不可能:因为当mutation被触发时,回调函数还没有被调用,devtools不知道回调函数何时被实际调用3354。本质上,回调函数中的任何状态变化都是不可追踪的。

  

在组件中提交 Mutation

  你可以用这个。$ store.commit (XXX )提交一个突变,或者使用mapMutations辅助函数将组件中的方法映射到store.commit调用中(需要注入到根节点的存储中)。

  从“vuex”导入{ mapMutations }

  导出默认值{

  //.

  方法:{

  .地图突变([

  增量,//将` this.increment()映射为"这个store . commit( increment )

  //`地图突变也支持载荷:

  增量依据//将` this.incrementBy(amount)映射为"这个store.commit(incrementBy ,amount)`

  ]),

  .地图突变({

  添加:增量//将` this.add()映射为"这个store . commit( increment )

  })

  }

  }

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。



推荐阅读
  • 本文介绍了如何使用vue-awesome-swiper组件,包括在main.js中引入和使用swiper和swiperSlide组件,以及设置options和ref属性。同时还介绍了如何在模板中使用swiper和swiperSlide组件,并展示了如何通过循环渲染swipes数组中的数据,并使用picUrl属性显示图片。最后还介绍了如何添加分页器。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
author-avatar
一个简单的程序员
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有