【vue】vuex详解

news/2024/11/23 2:04:43/

文章目录

  • vuex
    • state
    • getters
    • mutations
    • actions
      • actions和mutations的区别
    • modules

vuex

vuex是一个专门为vue.js应用程序开发的状态管理模式+库,它采用集中式存储管理应用的所有组件的状态,并以响应的规则保证状态以一种可预测的方式发生变化

state

存放数据,类似与data

取state中的数据
方式一:

{{$store.state.a}}

方式二:

import {mapState} from 'vuex';
computed:{...	mapState(['a'])//在html中直接使用
}

getters

store中的计算属性,类似于组件中的computed
store.js

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({state:{list:[{good_id:1,good_name:'鞋',good_num:3,goood_price:299},{good_id:2,good_name:'衣服',good_num:2,goood_price:499},]},getters:{//计算价格total(state){let obj={count:0,num:0}state.list.forEach(v=>{//总价obj.count+=v.goods_num+v.goods_price;//总数量obj.num+=v.goods_num;});return obj;}},mutations:{},actions:{},modules:{}
})

使用

 {{total.num}}{{total.count}}
import {mapState} from 'vuex';
computed:{...mapGetters(['total'])
}

mutations

存放方法的,类似与methods

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({state:{a:1},mutations:{changeBtn(state){state.a='abc'}},actions:{},modules:{}
})

使用:

<template><div><h1>{{a}}</h1><button @click="changeBtn">按钮</button></div>
</template>
<script>
import {mapState,mapMutations} from 'vuex'
export default {computed:{...mapState(['a'])},methods:{...mapMutations(['changeBtn'])}
}
</script>

actions

actions类似与mutations,但是actions是通过commit直接提交mutations,它不是直接变更状态,可以包含任意异步操作

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({state: {list: [{ checked: true },{ checked: true },{ checked: true },{ checked: true },{ checked: true },{ checked: true },{ checked: true },{ checked: true }],selectList: []},getters: {checkAll (state) {return state.list.length == state.selectList.length}},mutations: {// 全选checkAll (state) {state.selectList = state.list.map(v => {v.checked = true})},// 全不选unCheckAll (state) {state.list.forEach(v => {v.checked = false});state.selectList = []}},actions: {// 购物车中的单选和全选checkedFn ({ commit, getters }) {//选中的情况下提交反选,反选的情况下提交选中getters.checkAll ? commit('unCheckAll') : commit('checkAll')}},modules: {}
})
<template><div><HeaderNavigation></HeaderNavigation><h1>This page is about</h1><ul><li v-for="(item, index) in list":key="index"><input type="radio":checked='item.checked'></li></ul><label for=""@click="checkedFn"><input type="radio":checked='checkAll'>全选</label></div>
</template><script>import HeaderNavigation from '@/components/HeaderNavigation.vue'
import { mapState, mapGetters, mapActions } from 'vuex'export default {components: {HeaderNavigation},computed: {...mapState(['list']),...mapGetters(['checkAll']),},methods: {...mapActions(['checkedFn'])}
}
</script><style>
body {margin: 0;
}
</style>

mapState、mapGetters放在组件中的computed中
mapMutations、mapActions放在组件中的methods中

actions和mutations的区别

actions提交的是mutation,而不是直接变更状态、
mutations 是同步的、actions可以包含任意的异步操作

modules

分成多个模块


http://www.ppmy.cn/news/49321.html

相关文章

VMware ESXi 8.0U1 Unlocker OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)

发布 ESXi 8.0U1 集成驱动版&#xff0c;在个人电脑上运行企业级工作负载 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-8-u1-sysin/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 2023-04-18, VMware vSp…

IT项目管理 PPT 选择题【太原理工大学】

单选题&#xff0c;10*2分20分 填空题&#xff0c;10*2分20分 判断题&#xff0c;10*1分10分 画图题&#xff0c;10分 进度计算题&#xff0c;15分 成本计算题&#xff0c;15分 简答题&#xff0c;5*2分10分 重点章节&#xff1a;3、4、5、6、7章 我觉得小题应该是在 PP…

【分布式系统架构】架构演进方案

背景 在面试的时候我们可能会遇到面试官反问当流量激增的时候&#xff0c;你如何进行设计方案呢&#xff1f; 其实在架构设计的时候&#xff0c;简单、合适、演进进行设计&#xff0c;而具体的成熟方案高性能、高可用、可拓展。 比如假设我们刚开始用户量不多&#xff0c;日QP…

Git - 如何checkout一个tag

在版本管理中&#xff0c;Tag就是用来标记和保存一个配置状态&#xff0c;用来对配置进行跟踪和备份。 在发布版本时&#xff0c;一般都会创建一个Tag。然后用这个Tag就能引用到这个版本。 在Git中&#xff0c;如果知道一个Tag状态&#xff0c;如何在本地将配置切换到该状态呢&…

Java - Lambda 表达式

一、背景 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。 Lambda 表达式&#xff08;Lambda expression&am…

托福高频真词List03 // 附阅读真题

目录 4月23日单词 4月23日真题 4月23日单词 adjacentneighboringnearbyadj 毗邻的dependablereliableadj 可靠的 chronology a list that pairs past events with dates n 年表remarkably closeextremely close极为接近competenceabilityn 才能supplementadd tov 补充supplem…

Mybatis框架超详解及运用总结

Mybatis 一、什么是Mybatils&#xff1f;二、第一个Mybatils程序2.1、创建springboot工程2.2、准备数据2.3、配置MyBatis2.4、编写SQL语句2.5、单元测试 三、JDBC四、数据库连接池五、lombok六、Mybatis基础操作6.1、删除6.2、新增6.2.1、主键返回 6.3、修改6.4、查询6.4.1、数…

基于 多态 的职工管理系统(Staff Management System)

目录 一、管理系统需求 作用&#xff1a;管理公司内所有员工的信息 分类&#xff1a;要显示每位员工的编号、姓名、岗位与职责 具体实现的功能&#xff1a; 二、创建管理 类 三、各个接口函数 1、菜单展示功能 2、 选择功能 3、创建员工功能 ①普通员工employee ②经理…