逆战一之Vuex的介绍以及一些基本用法

一.什么是Vuex

1.介绍:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。
2.理解: Vuex相当于一个仓库,每一个 Vuex 应用的核心就是 store(仓库),集中存储和管理应用的所有组件的状态.

二.什么是"状态管理模式"

示意图

  • Vue Components:Vue组件。HTML页面上,负责接收用户操作等交互行为,执行dispatch方法触发对应action进行回应
  • dispatch:操作行为触发方法
  • actions:操作行为处理模块.可以执行异步代码,例如Ajax.该模块提供了Promise的封装,以支持action的链式触发。
  • commit:状态改变提交操作方法。对mutation进行提交
  • mutations:状态改变操作方法。是Vuex修改state的唯一推荐方法,该方法只能进行同步操作.
  • state:页面状态管理容器对象.面显示所需的数据从该对象中进行读取,利用Vue的细粒度数据响应机制来进行高效的状态更新。
  • getters:state对象读取方法.可以认为是state中的计算属性

Vue组件接收交互行为,调用dispatch方法触发action相关处理,若页面状态需要改变,则调用commit方法提交mutation修改state,通过getters获取到state新值,重新渲染Vue Components,界面随之更新

三.使用场景

1.中大型单页面开发应用
2.解决非父子之间的通讯问题,
3.提高用户体验,利用Vuex缓存后台数据-----缺点:刷新页面,数据会丢失,可以使用’'vue-persistedstate"插件解决

//引入插件
import createPersistedState from "vuex-persistedstate"; 

// 实例化
const store = new Vuex.Store({
  plugins: [createPersistedState({
    reducer(val){
      return {
        user: val.user
      }
    }
  })]

4.基本用法

//引入Vue Vuex
import Vue from 'vue'
import Vuex from 'vuex'
//注册Vuex
Vue.use(Vuex)
//实例化 Store
export default new Vuex.Store({
	//全局状态
  state: {
   cinemalist:[]
  },
  mutations: {
  //修改数据
  setCinemaAction(state,data) {
      state.cinemalist=data
    }
  },
  actions: {
  //异步axios获取数据
  getCinemaAction(store) {
      axios({
        url: "/gateway?cityId=310100&ticketFlag=1&k=653967",
        method: "get",
        headers: {
          "X-Host": "mall.film-ticket.cinema.list"
        }
      }).then(res => {
          store.commit("setCinemaAction",res.data.data.cinemas)
        });
    }
  },
  getters:{
   topDatalist(state){
   // 对上面的“全局状态”进行数据处理, 类似于vue中的计算属性
      return   state.cinemalist.slice(0,5)
    }
  },
})

注意:
vuex只能有一个store,
为了防止多人修改,我们切割成子store, 再合并成唯一一个大的store对象

数据我们可通过辅助函数的方式获取

import {mapState,mapGetters,mapActions} from "vuex"
export default {
	 computed:{
	  ...mapState(["cinemalist"]),
	  ...mapGetters(["topDatalist"]),
	  ...mapActions(["getCinemaAction"])
	 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值