vuex从安装到使用的教程

vuex的安装
 npm install vuex --save或cnpm install vuex --save
main.js引入vuex
import Vue from 'vue'
import Vuex from 'vuex'
import store from './vuex/store'Vue.use(Vuex)
vuex的目录结构和store.js的代码

这里写图片描述

store.js的代码(异步和同步的代码均留下两个方法)
import Vue from 'vue'
import Vuex from 'vuex'
import GLOBAL_CONFIG from '../config/config'
import axios from 'axios'
import BScroll from 'better-scroll'
// import BScroll from '../assets/js/iscroll'Vue.use(Vuex)const menu = {state: {mannumber:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,'其它'],activeindex: null,nowindex:null,products: {},GLOBAL_CONFIG:GLOBAL_CONFIG['GLOBAL_CONFIG']},mutations: {get_product: function (state, products) {state.products = products;for(let i = 0; i < state.products.length; i++){if(state.products[i]['image'] != false && state.products[i]['image'].indexOf(state.GLOBAL_CONFIG['dataImage']) === -1){state.products[i]['image'] = state.GLOBAL_CONFIG['base64Header'] + state.products[i]['image'];}else{state.products[i]['image'] = require("../assets/file.png");}}}},actions: {}
}export default new Vuex.Store({state: {mastdisplay: false,supervisory_control:false,product: {},countNumber:{},orderdetail:{},GLOBAL_CONFIG:GLOBAL_CONFIG['GLOBAL_CONFIG']    },mutations: {mastdisplay: function (state,name) {if(typeof name !== 'string'){              if(name['name'] == 'mastdisplay' || name['name'] == 'mastspecificat' || name['name'] == 'mastflavour'){if(name['product'].hasOwnProperty('specs')){for(let i = 0; i < name['product']['specs'].length; i++){name['product']['specs'][i]['number'] = 0;}}                   state.product = name['product'];if(name['name'] === 'mastspecificat'){let specificatscroll = new BScroll('.mast-scrollspecificat',{scrollY: true,click: true});}if(name['name'] === 'mastflavour'){let flavouringscroll = new BScroll('.mast-flavouringscroll',{scrollY: true,click: true});}                                        }name = name['name'];            }if(state[name]){state[name] = false;}else{state[name] = true;}},countNumber: function (state,countNumber) {state.countNumber = countNumber;},get_orderdetail: function (state,response) {state.orderdetail = response;console.dir(state.orderdetail);},hidden_customcount: function (state) {            if(state.mastload){state.mastload = false;}}},components:{},modules: {menu:menu},actions: {get_orderdetail: function (context,company,name) {axios.post('/point-api-order_detail',{tableid:company['tableid'],companyid:company['companyid']}).then(function(response){           context.commit('get_orderdetail',response);}, function(response){mui.toast('网络错误');});},check_cart: function (context,product) {axios.post('/point-api-checkcart',{user_id:product['user_id'],url:context.state.GLOBAL_CONFIG['WECHAT_API_HOST']+"/wechat/app/index.php?i="+localStorage.i+"&c=entry&do=ShopCart&m=wei_scan_code"}).then(function(response){               if(response.hasOwnProperty('error')){mui.toast(response['erron']);return false;}else{context.commit('set_cart',response);// let menuscroll = new BScroll('.mast-cart-content-parent',{//     scrollY: true,//     click: true// });} }, function(response){mui.toast('网络错误');});}
})
mutations的使用,可以在mutations里面定义方法,里面的方法为同步操作,方法里的第一个参数是state对象,可操作state对象里定义的属性,第二个参数为传进来的参数,也可不传,在组件里可以直接操作state里的属性,例如:
this.$store.state.mastdisplay 或通过store里的方法改变this.$store.commit('mastdisplay');
actions的使用,actions里面的方法用来处理异步操作,调用异步接口后,获取到数据,对state里的属性进行重新赋值,然后在组件里计算该属性的变化
computed: {orderdetail: function () {return this.$store.state.orderdetail;}mastdisplay: function () {return this.$store.state.mastdisplay;}products: function () {return this.$store.state.menu.products;},product: function () {return this.$store.state.product;}}
在组件里调用actions方法
this.$store.dispatch('get_orderdetail',{tableid:localStorage.tableid,companyid:localStorage.companyid});
有时候我们可能会把一个组件分为一个模块,例如上面的代码,我定义了一个menu的模块,那么我需要在modules里面引入这个模块,在组件里操作该模块的属性如下:

this.$store.state.menu.products

调用该模块的mutations里的方法不需要加上menu.

关于vuex还有很多的东西没用过,大家可以自己去玩下,最好把官网看多几遍,后来再去看的时候,受益良多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

未来,仅凭几个前端工程师,就能 hold 住一家企业吗?

阿里妹导读&#xff1a;微前端架构旨在解决单体应用在一个相对长的时间跨度下&#xff0c;由于参与的人员、团队的增加&#xff0c;从一个普通应用演变成一个巨石应用(Frontend Monolith)&#xff0c;随之而来的应用不可维护问题。这类问题在企业级 Web 应用中尤为常见。今天&a…

报告显示,媒体行业已成撞库攻击常见目标

一项报告显示&#xff0c;在2018年1月到2019年12月间&#xff0c;全球媒体行业共遭受了170亿次撞库攻击。 这份名为《Akamai 2020年互联网状况/媒体行业中的撞库攻击》的报告还发现&#xff0c;在报告期间内观察到的880亿起撞库攻击中&#xff0c;有20%针对的是媒体公司。 该…

yarn : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本

文章目录1. 现象2. 授权安全策略3. 重新执行命令1. 现象 2. 授权安全策略 若要在本地计算机上运行您编写的未签名脚本和来自其他用户的签名脚本&#xff0c;请使用以下命令将计算机上的 执行策略更改为 RemoteSigned 执行&#xff1a; set-ExecutionPolicy RemoteSigned查看执…

标记 (TAG) 您的 k8s 集群资源

标签的基本知识 标签是资源Meta信息&#xff0c;标签是一些充当元数据的词和短语&#xff0c;支持用户自定义和系统预制。每个标签都包含一个键&#xff08;Key&#xff09;和一个值&#xff08;Value&#xff09;。标签是一种资源的属性描述。标签与资源是 多对多的关系。标签…

CentOs7搭建PHP环境

######提示&#xff1a;wget 下载URL提示无法建立SSL连接,进行如下教程操作 https://blog.csdn.net/xinghun_4/article/details/50500331 reboot 重启虚拟机一键安装所有编译工具 gcc yum groupinstall "Development Tools" "Server Platform Development&quo…

央视315曝光SDK事件,应用开发者如何避坑?

7月16日晚&#xff0c;央视315晚会拉开大幕&#xff0c;再次敲响了消费领域的警钟。据央视报道&#xff0c;上海市消费者权益保护委员会委托第三方对市场上的App进行检测&#xff0c;发现某些第三方开发的SDK包存在违规收集用户个人信息的情况。日前&#xff0c;工信部已要求严…

VS Code 切换大小写

默认是空的&#xff0c;我设置的快捷键是 shift altd 转换为大写 shift altx 转换为小写

一个 Blink 小白的成长之路

写在前面 写过blink sql的同学应该都有体会&#xff0c;明明写的时候就很顺滑&#xff0c;小手一抖&#xff0c;洋洋洒洒三百行代码&#xff0c;一气呵成。结果跑的时候&#xff0c;吞吐量就是上不去。导致数据延迟高&#xff0c;消息严重积压&#xff0c;被业务方疯狂吐槽。这…

携程实时智能检测平台建设实践

本次演讲将为大家介绍携程实时智能异常检测平台——Prophet。到目前为止&#xff0c;Prophet基本覆盖了携程所有业务线&#xff0c;监控指标的数量达到10K&#xff0c;覆盖了携程所有订单、支付等重要的业务指标。Prophet将时间序列的数据作为数据输入&#xff0c;以监控平台作…

VS Code 设置好看的字体:Operator Mono

文章目录一、字体资源地址1. 链接2. 资源下载二、效果图2.1. JS 代码效果2.2. CSS 文件效果2.3. HTML 文件效果三、安装字体3.1. 字体列表3.3. 安装方式3.3. VSCode 配置一、字体资源地址 1. 链接 FiraCode 和 Operator Mono 字体下载地址 2. 资源下载 Git下载 git clone …

钟南山团队携手腾讯研发新冠重症AI预测 成果登上Nature子刊

钟南山院士团队与腾讯AI Lab日前披露了利用AI预测COVID-19患者病情发展至危重概率的研究成果&#xff0c;可分别预测5天、10天和30天内病情危重的概率&#xff0c;有助合理地为病人进行早期分诊。这项研究已在2020年7月15日发布于国际顶级期刊《Nature》子刊《Nature Communica…

CentOs搭建svn

安装SVN yum install -y subversion检查是否安装成功 svnserve --version创建版本库 我们先创建/var/svn这么目录 mkdir /var/svn cd /var/svn创建版本库 svnadmin create /var/svn/project后边的project就是我们项目的版本库 cd project ls 会看到自动生成的版本库文件…

互联网全域降维攻击战略概述

前言&#xff1a; 在互联网维度体系概念被提出之后&#xff0c;社会上对于降维的理解向不同的方向发展&#xff0c;如很多人认为降维呈现的是有高难度业务实施能力的企业向低难度领域业务进行渗透和发展的方式&#xff0c;还有的认为降维就是互联网行业对于传统行业的业务冲击…

VS Code 主题配置

文章目录1. 全局配置2. 格式化单引1. 全局配置 ctrlshirtp 搜索settings.json替换为下面内容即可 {"vetur.ignoreProjectWarning": true,//配置Vetur插件&#xff0c;忽略提示// 在方法括号之间插入空格"javascript.format.insertSpaceBeforeFunctionParenthe…

当达摩院大牛学会抠图,这一切都不受控制了……

在外界人眼中&#xff0c;达摩院人才济济&#xff0c;大多是奇人异士&#xff0c;做着神秘且高端的研究&#xff0c;有如扫地僧一般的存在&#xff0c;但是如果有一天&#xff0c;当神秘专家不再神秘&#xff0c;你发现他们也开始玩抠图&#xff0c;且这一切都朝着不受控制的方…

腾讯安全携手华夏银行“论道”金融风控,传递在线反欺诈干货建议

前不久&#xff0c;Gartner发布了《在线反欺诈市场指南》&#xff0c;对全球聚焦在线反欺诈全链路监测与防护的厂商进行评估&#xff0c;给遭遇欺诈的企业提供了应对指南和选择建议。其中腾讯云成为中国唯一入选服务商&#xff0c;得到了Gartner官方的推荐。在报告中&#xff0…

个推消息推送,实现推送消息和语音合成

消息推送的实现&#xff1a; 1.打开应用的时候 2.通过plus.push.getClientInfo().clientid获取到clientid 3.接口传到服务器 4.进行判断表里是否存在该条数据&#xff0c;没有就插入&#xff0c;有则不插入&#xff0c;另外关联登录的companyid 5.在服务器进行轮询&#x…

Flutter嵌套深?扩展函数了解一下

背景 嵌套层级深的问题让众多刚接触Flutter的同学感到困扰&#xff0c;它不仅是看起来让人感到不适&#xff0c;还非常影响编码体验。 大佬们会告诉你应该拆分自己的嵌套代码(自定义widget或者抽取build方法&#xff09;来减少嵌套层级。这确实是个行之有效的方法&#xff0c…

VS Code 中的文件添加图标的插件vscode-icons

文章目录1. 效果图2. 用法1. 效果图 2. 用法 一旦你安装了该插件你重启VS Code后会在右下角收到一个该插件的提示&#xff0c;这时你要点击Activate激活icons。 你也可以通过点击以下功能来激活它(VS Code中可能存在很多主题&#xff0c;想用哪个就激活哪个)。 Linux & W…

WebSphere 应用服务器都支持哪些认证

WebSphere 应用服务器支持的认证方案包括基本认证、摘要认证、定制认证、证书认证。 基本认证&#xff1a;使用 HTTP 或 HTTPS 请求来自客户机的用户名和口令。 用普通文本将用于验证的信息发送给服务器验证。所有浏览器都支持基本认证。如果一个用户标识符和口令提供了足够的认…