Web前端开发之VUE17——Vuex

目录

Vuex是什么:

初始化功能:

定义state:

映射state方法:


Vuex是什么:

为了便于我们对多个组件复杂多样的数据分享和处理进行统一控制,vue推出vuex作为多组件统一控制的工具。

Web前端开发之VUE17——Vuex_第1张图片Web前端开发之VUE17——Vuex_第2张图片

初始化功能:

Web前端开发之VUE17——Vuex_第3张图片

定义state:

 Web前端开发之VUE17——Vuex_第4张图片

 Web前端开发之VUE17——Vuex_第5张图片

映射state:

 Web前端开发之VUE17——Vuex_第6张图片

vue3中的一些改变

 Web前端开发之VUE17——Vuex_第7张图片

getter方法:

通过上面的方法我们需要写自定义的computed方法,但是vuex帮我们继承了一个getter方法以便内含computed方法。

首先getter方法类似于计算属性,很多情况下就是一种内置的计算属性。

首先我们要在store容器中,定义我们的getter。

Web前端开发之VUE17——Vuex_第8张图片

Web前端开发之VUE17——Vuex_第9张图片 

Web前端开发之VUE17——Vuex_第10张图片

 示例代码:

//app.vue


//store容器
const store = createStore({
  state: {
    //存储状态
    count: 12,
    tableBar:[
      {id:1,text:'...',isSelected:true},
      {id:2,text:'...',isSelected:false},
      {id:3,text:'...',isSelected:true},
      {id:4,text:'...',isSelected:false},
    ]
  },
  getters:{
    getCountPlus(state){
      return state.count+2
    },
    getSelectedTableBar:(state)=>{
      return state.tableBar.filter(e=>e.isSelected===true)
    },
    getTableBarById:(state)=>(id)=>{
      return state.tableBar.find(e=>e.id===id)
    }
  },
  mutations: {
    changeCount(state) {
      state.count++
    }
  },
})

 Mutation:

Web前端开发之VUE17——Vuex_第11张图片

payload载荷(给mutation传参) :

 Web前端开发之VUE17——Vuex_第12张图片

 Web前端开发之VUE17——Vuex_第13张图片

 常量代替mutation方法名:

 此方法一般用于多人项目合作。

Web前端开发之VUE17——Vuex_第14张图片

mutation函数同步性:

Web前端开发之VUE17——Vuex_第15张图片

 实质上任何在回调函数中进行的状态的改变都是不可追踪的。

Aciton:

action的使用icon-default.png?t=M3K6https://vuex.vuejs.org/zh/guide/actions.html

dispatch分发:

因为action方法的异步性及mutation方法的同步性,所以我们使用dispatch方法来调用异步元action方法。

Web前端开发之VUE17——Vuex_第16张图片

 同样的action和mutation也有自己的map方法:

Web前端开发之VUE17——Vuex_第17张图片

 mutation类似,详见官方文档。

module模块化:

Web前端开发之VUE17——Vuex_第18张图片

 

Web前端开发之VUE17——Vuex_第19张图片

 Web前端开发之VUE17——Vuex_第20张图片

module的命名空间:

Web前端开发之VUE17——Vuex_第21张图片 

 加上namespace:true后,getter和mutation和action不再是全局挂载,而是模块内私有。

封闭后可以使用下面的调用方法调用:

Web前端开发之VUE17——Vuex_第22张图片

 第三种方法:

createNamespacedHelpers方法:

 

 

 

你可能感兴趣的:(#,Web前端开发——Vue,前端,vue,node.js)