新人对VueX的理解(Vue状态管理模式)

一.Vuex是什么?

什么是Vuex

介绍:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。
理解:核心就是 store(仓库),仓库是用来干什么的?你就当它用来储存东西的。
在vue的组件化开发中,经常会遇到需要将当前组件的状态传递给其他组件。父子组件通信时,我们通常会采用 props + emit 这种方式。但当通信双方不是父子组件甚至压根不存在相关联系,或者一个状态需要共享给多个组件时,就会非常麻烦,数据也会相当难维护,这对我们开发来讲就很不友好。vuex 这个时候就很实用,不过在使用vuex之后也带来了更多的概念和框架,需慎重!
理解:核心就是 store(仓库),仓库是用来干什么的?你就当它用来储存东西的。


vuex.png

怎么下载vuex

vuex.png

3、在创建好的index.js文件中(这里直接上代码) 这些就是vue的核心

    import Vue from 'vue'
    import Vuex from 'vuex'
    Vue.use(Vuex)
    var store = new Vuex.Store({
      state: {},
      getters: {},
      mutations:{},
      plugins: [],
      modules: {},
      actions: {}
    })
    export default store
    4、创建好的vuex不能直接使用,我们要去main.js(全局)中配置
    import 这里放入的是你vuex中导出的名字 from '这里写的是你的vuex路径'
    import store from './store/index' 这个是我的vuex名字与路径

1、下载vuex,在vue项目终端任意输入一个指令即可

    npm install vuex 
  或者 cnpm install vuex 
  或者 yarn add vuex 

state 是什么?

 import Vue from 'vue'// 引入vue
import Vuex from 'vuex'  // 引入vuex
 
Vue.use(Vuex) 
 
const store = new Vuex.store({
 state:{
//存放的键值对就是所要管理的状态
username:'你好'
},
mutations:{
//es6语法,等同edit:funcion(){...}
user(state,val){
   state.username=val
}
}
})
 //取值 this.$store.state.user.username
  1. vue的传值只能传给有关联的人而我们有点时候需要传给没有关联的人 使用我们需要全局变量
  2. window 帮我们挂到window上 然后类名上state里面的值是
  3. 我们通过state:存储状态(变量 )的方式 把值存起来

Mutations 是什么? 主要通过 Mutations改变 state里面的值

单个值提交时:

this.$store.commit('edit',15)

当需要多参提交时,推荐把他们放在一个对象中来提交:

  this.$store.commit('edit',{age:15,sex:'男'})

接收挂载的参数:

 mutations: {
edit(state,payload){
        state.name = 'jack'
        console.log(payload) // 15或{age:15,sex:'男'}
    }

},

什么是plugins 全局设置样式

//安装 npm install vuex-localstorage'
 //引入vue 
 import createPersist from 'vuex-localstorage'
  plugins: [
createPersist({
  namespace: 'namespace-for-state',
})
  ],

//设置全局

什么是modules 可以干什么

一、什么是module?
背景:在Vue中State使用是单一状态树结构,应该的所有的状态都放在state里面,如果项目比较复杂,那state是一个很大的对象,store对象也将对变得非常大,难于管理。
可以让他更好管

  import Vue from 'vue'
import Vuex from 'vuex'
// import create from 'vue-localstorage'
Vue.use(Vuex)
// 创建vues构造器
//import 'es6-promise/auto'
// 引入vue 的localstorage
import user from "./user"
import createPersist from 'vuex-localstorage'
export default new Vuex.Store({
state: {
n: "",
arr: [],
name: ""
},
mutations: {
increment(state, val) {
  state.n = val
},
arr2(state, val) {
  state.arr = val
}

},
plugins: [
 createPersist({
  namespace: 'namespace-for-state',
})
],
modules: {
user
  //设置自己
//引入的孩子 user
 }

})

modules里面 引入的孩子 user
下面是user的样式

export default {//导出
state: {
username: "",
usernumber: ""
},
mutations: {
user(state, val) {
  state.username = val
},
},
 }

什么是Action

Action 类似于 mutation,不同在于:

Action 提交的是 mutation,而不是直接变更状态。:
actions 与 mutations 使用方法相同,不过他是执行异步操作的

state:{
    key:""
},
mutations:{
    upkey(state,val){
        state.key = val
    }
},
actions:{
    upkey(state,val){
        setTimeout(()=>{
            state.commit('upkey', val);
        },1000)
    }
}

在组件中使用传值

    this.$store.dispatch('upkey',10)
    this.$store.dispatch('方法名',值)       

接收值
this.$store.state.key

modules将vuex模块化

vuex.png

在创建的store文件夹中在创建一个js文件,这里我就叫user.js了

首先要在store中的index.js文件中引入刚创建好的js文件

import user from './user'
在index文件中写入

 modules:{
        user   es6写法,属性名和属性值相同情况下直接写入一个即可
    },
在去创建好的user.js中


export default {
    state:{
           userinfo :""
    },
    mutations:{
           add2(state,val){
           state.userinfo = val
        },
    },
}

处。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容