vue-总结08-高级-全家桶-vuex

2# vuex
vuex是管理vue里集中式管理数据(一处修改,多处使用)的仓库,一般用于中大型项目的开发,
当你不确定是否使用vuex的时候就不要使用了。
学习阶段必须要用
公司用不用看是否有要求

1.什么是状态
	我们使用一条数据去管理一个视图,那么这个数据我们就称之为 ‘状态’
2.vuex是做什么的?
	管理数据的
	Vuex是一个集中式的存储管理中心,vuex中可以用来存储 数据( 状态 )
	vuex也是一个状态管理中心,它也可以进行状态的管理
3.什么是状态管理模式?
	我们使用一条数据去管理一个视图,那么这种管理模式就称之为 状态管理

vuex的核心组成部分

在这里插入图片描述
分别为: actions 、 state 、 mutations

1.actions表示动作的创建者,它的作用是创建动作,然后发送动作, 用于用户交互、后端数据交互
	举例:一个用户点击了登陆按钮
2.mutations 表示动作的出发者,它的作用是用来修改数据 -更新视图
3.state它是数据的存储者,它的作用是定义数据【 状态 】

vuex使用情况

1.分片指的是是否拆分数据

  • 数据不分片
  • 数据分片

2.分片是靠一个项目来实现的 modules

3.vuex的使用流程(数据不分片
数据不分片就是将数据 放在一起 以下例子可以实现组件通信

1.安装  yarn add vuex  生产环境直接安装
2.在src里创建 store文件夹,里面新建index.js  引入插件 vue vuex 利用use中间件使用vuex   再创建store模块 导出store模块
3.在main里注入store模块

数据部分片

import Vue from 'vue'
import Vuex from 'vuex'
import state from '写着state模块的路径'
import actions from '写着actions模块的路径'
import mutations from '写着mutations模块的路径'
import modules from '写着modules模块的路径'

Vue.use(Vuex)

const store = new Vuex.Store({		//这边Store的S是大写   注意!!!!
	state,//存放数据   可以在组件中  this.$store.state.xx(具体的值)来访问state里的数据
	actions,//存放方法
	mutations,
	getters,
	modules
})

export default store
//一开始的数据
//在组件里 可以通过 this.$store.state.count  来访问数据
const state = {
	count:0,
}

export default state

然后再组件里使用数据 通过 this.$store.state.count
//这里存放的是方法
//作用是
//1.创建动作
//2.发送动作

const INCREMENT = 'INCREMENT'
const actions = {
	increment({commit},b){ //这个函数的第一个参数为store本身,下面有一些方法
						   //第二个参数为组件传递来的数据  这类数据叫payload也叫负载
	const action = {
		type:INCREMENT  //动作类型
		}
	commit(action)		//将actions和mutations连接
	}
}

export default actions
//mutations中存放的也是方法,作用是修改数据,mutations里的方法必须是actions里的动作类型
//
//
const mutations = {  
	[INCREMENT] (state,action){//第一个参数代表  state  第二个参数代表的是actions里的方法发来的action动作
	state.count++

	}
}

export default mutations

数据分片

在这里插入图片描述
在这里插入图片描述

import Vue from 'vue'

import Vuex from 'vuex'

import shopsModule from 'views/shops_list/store'


Vue.use(Vuex)

const store = new Vuex.Store({
    modules:{
        shopsModule
    }
})

export default store
import request from 'utils/request'

import API from 'api'

const GET_TABLE_DATA = 'GET_TABLE_DATA'

const shopsModule = {
    state: {                            //存放数据              数据储存者
        tableData: null
    },
    actions: {                          //数据交互   动作创建者  数据请求者
        async getTableData({ commit }) {
            const result = await request({
                url: API.shops_list,
                method: 'get'
            })

            const action = {            //创建动作
                type: GET_TABLE_DATA,    //动作类型
                payload: result          //负载
            }

            commit(action)            //将动作发送走
        }
    },
    mutations: {                        //修改数据  更新视图    数据修改者 连接者
        [GET_TABLE_DATA](state, action) {
            state.tableData = action.payload
        }
    }
}

vuex辅助工具

import {mapState,mapActions,mapMutations,mapGetters} from 'vuex'

export default {

computed:{
	...mapState({
		todos:state => state.todslist.todos //template中就能直接使用todos
	})
}

methods:{
	...mapAtions([actions中定义的事件])//相当于直接将actions中的事件放入了methods
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值