vuejs学习6.1 Vuex,state

Vuex概念

Vuex是一个专为vuejs应用程序开发的状态管理模式,他采用集中式存储管理,状态可以理解为变量

状态管理

理解为多个变量需要共享,可以创建一个对象看作一个管家,多个组件需要使用时进行获取,
集中式存储管理即一起管理状态(变量)
这个管家对象数据是响应式
可以自己封装一个对象来实现变量共享,但是无法做到响应式,所以创建了Vuex

管理什么状态

多个组件共享状态:例如登陆状态,用户名称,头像,购物车物品,收藏

单页面状态管理

状态改变界面,界面上进行动作,动作改变状态

Vuex使用

添加插件

npm intall vuex --save

使用Vuex

步骤

1,src下创建一个文件夹store,放Vuex管理文件
2,进行配置,

import Vue from 'vue'
import Vuex from 'vuex'
//安装插件
Vue.use(Vuex)

//创建对象
const store = new Vuex.Store({
  state:{
    count:1000
  },
  mutations:{

  },
  actions:{

  },
  getters:{

  },
  modules:{

  }
})

//导出store
export default store

3,使用Vuex,在main.js中

import Vue from 'vue'
import App from './App'

import store from "./store";

Vue.config.productionTip = false

new Vue({
  el: '#app',
  
  store,
  
  render: h => h(App)
})

4,然后之后调用可以直接使用$store来获取配置的Vuex对象,如获取共同管理的count,可以直接 $store.state.count来获取共同管理的count数据

Vuex状态管理图例

在这里插入图片描述
注解:
state,actions,mutations属于Vuex
组件可以引用Vuex里面的state
但是修改Vuex中的state不是直接修改的(可以修改成功,不会报错),而是通过修改mutations来修改state
原因:devtools是Vue开发的一个浏览器插件,可以记录每次修改state的状态,可以跟踪是哪个界面修改的state,便于调式。是通过mutations来检测的

但是可以直接修改mutations来修改state,
而action的目的:
action是为了实现异步操作,因为mutations只能实现同步操作,action是结束了异步操作,到mutations都是同步操作了

而异步操作是通过网络请求,所以后端(backend)请求API

修改数据

在Vuex配置中设置mutations

mutations:{
    increment(state){
      state.count++
    },
    decrement(state){
      state.count--
    }
  },

在界面中调用时调用自己的函数

<button @click="add">+</button>
    <button @click="sub">-</button>

自己函数与Vuex内部的mutations对应,注意格式为this.$store.commit(‘方法名’)

methods:{
    add(){
      this.$store.commit('increment')
    },
    sub(){
      this.$store.commit('decrement')
    }
  }

state

存放状态相关信息,其他地方可以通过$store.state.name来获取

单一状态树

单一数据源,如果状态信息保存到多个store对象中,后期维护管理困难,所以Vuex使用单一状态树管理应用层级的全部状态,即只使用一个store来管理,单一状态树能够直接找到某个状态,更加方便管理和维护。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值