IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vuex的五大辅助函数使用技巧 -> 正文阅读

[JavaScript知识库]vuex的五大辅助函数使用技巧

vuex的五大辅助函数使用技巧

vuex时vue的一个全局状态管理文件,又称全局数据共享,在这里定义的数据,我们在任何文件中都可以访问的到,为我们的项目带来极大的好处,以下是我定义在全局状态文件数据,所有示例均已这个为基础访问

import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    data:{
      numbervalue:5,
      action_data:''
    }
  },
  getters:{
    dbclick(state){
      console.log(state,"state")
      return state.data.numbervalue*2
    },
  },
  mutations: {
    // 接收两个参数 一个参数为state , 另一个为载荷 且大部分为对象 因为对象可以传任何数据
    montify(state,payload){
      state.data.numbervalue=payload.val
      console.log("载荷",payload)
    },
    action(state,payload){
      console.log("打印",state)
      state.data.action_data=payload
    }
  },
// Action 类似于 mutation,不同在于:
// - Action 提交的是 mutation,而不是直接变更状态。
// - Action 可以包含任意异步操作
// Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象,因此你可以调用,实践中,我们会经常用到 ES2015 的[参数解构](https://github.com/lukehoban/es6features#destructuring)来简化代码
  actions: {
    prodect({commit},payload){
      // let url = 'https://api.apiopen.top/getWangYiNews' 
      console.log("payload",payload)
      let url ='http://httpbin.org/get'
      return new Promise((resolve,reject)=>{
        axios.get(url).then((res)=>{
          resolve(res.data)
          console.log(res)
          commit('action',res.data)
        }).catch((err)=>{
          console.log("报错")
          reject(err)
        })
      })
    }
  },
  modules: {
  }
})
import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'

1.mapState

mapState 函数返回的是一个对象。通常,我们需要使用一个工具函数将多个对象合并为一个,以使我们可以将最终对象传给 computed 属性。自从有了对象展开运算符,我们可以极大地简化写法:

 computed: {
      // 使用对象展开运算符将此对象混入到外部对象中
      ...mapState(['data']),
    },

这样一来,我们便可以轻松的访问state中的数据 :例如我们可以这样

 <div>
      <h2>{{data.numbervalue}}</h2>
  </div>

但在以前我们通常是这样访问的

<div>
      <h2>{{$store.state.data.numbervalue}}</h2>
  </div>

一个两个还好,看不出什么问题,但如果属性或者数据过多时,我们还要一边一边的写重复的代码,降低工作效率,但辅助函数的出现,大大的节约了我们的开发效率

2.mapGetters

mapGetters 辅助函数仅仅是将 store 中的 getter 映射到局部计算属性,因此你可以这样来使用他

 computed: {
      ...mapGetters(['dbclick'])
    },

是不是很简单,我们再来看看以往的写法,它需要我们自己手动添加计算属性

computed: {
  donedbclick () {
    return this.$store.getters.dbclick
  }
}
<h2>
    {{dbclick}}  或者  {{donedbclick}}
</h2>

3.mapMutations

使用 mapMutations 辅助函数将组件中的 methods 映射为 store.commit,其原理就是将this.montify 映射为this.$store.commit(‘montify’)

 methods: {
      ...mapMutations(['montify']),
    },

也可以这样写

methods:{
    example(){
    	this.$store.commit('montify',payload)
	}
}
<h2 @click="montify(payload)">
    点击触发
</h2>
或者
<h2 @click="example">
    点击触发
</h2>

4.mapActions

在组件中使用 this.$store.dispatch('prodect') 分发 action,或者使用 mapActions 辅助函数将组件的 methods 映射为 store.dispatch 调用

methods: {
      ...mapActions(['prodect']),
      request(){
        this.prodect({name:'张三'}).then((result) => {
            //请求发送成功后的回调数据
          console.log("result",result)
        }).catch((err) => {
          
        })
      }
      request2(){
        this.$store.dispatch('prodect',{name:'张三'}).then((res)=>{
          console.log("res",res)
        })
      }
    //以上方法都是可以的,看自己的喜好
    },
<h2 @click="prodect(payload)">
    发送请求
</h2>
或者
<h2 @click="request">
    发送请求
</h2>
又或者
<h2 @click="request2">
    发送请求
</h2>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:06:34  更:2022-10-22 21:08:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:45:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码