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知识库 -> 03基于 Vue2.x 的 Vuex3.x . -> 正文阅读

[JavaScript知识库]03基于 Vue2.x 的 Vuex3.x .

前言

本文是基于 Vue2.x 的 Vuex3.x 版。如果是 Vue3.x 则对应 Vuex4.x

注意安装命令如下:

npm i vuex@3

简单示例

main.js 注入

import store from './store'
new Vue({
  el: '#app',
  store
})

src/store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
 
Vue.use(Vuex)
 
export default new Vuex.Store({
  state: {
    // 是否显示
    visible: true
  },
  mutations: {// 同步操作,可修改
    setVisible (state, value) {
        state.visible = value
    },
  },
  getters: {// 可以认为是 store 的计算属性
    getVisible(state) {
      return state.visible;
    }
  },
  actions: {// 异步操作,不可修改,交给mutations 
    setVisibleAction ({commit},payload) {
      commit("setVisible",payload)
    },
  },
  modules: {
  }
})

计算属性中使用

computed: {
	close: {
		set (value) {
			/ 两种方式,1. commits是同步;2. dispatch 是异步
			// return this.$store.commit('setVisible', value)
			return this.$store.dispatch('setVisibleAction', value)
		},
		get () {
            // 两种方式,1. getter;2. state
			// return this.$store.getters.getVisible
			return this.$store.state.visible
		},
	}
}

核心概念

mapState 辅助函数帮助我们生成计算属性;

mapGetters 辅助函数仅仅是将 store 中的 getter 映射到局部计算属性;

mapMutations 辅助函数将组件中的 methods 映射为 store.commit 调用(需要在根节点注入 store);

mapActions 辅助函数将组件的 methods 映射为 store.dispatch 调用(需要先在根节点注入 store);

State

Vuex 使用单一状态树,从 store 实例中读取状态最简单的方法就是在计算属性中返回某个状态。有如下四种常用方式:

方式一

函数

computed: {
	count() {
		return this.$store.state.count;
	}
}

方式二

get 函数

computed: {
	count: {
		get() {
			return this.$store.state.count;
		}
	}
}

方式三

mapState 对象方式。注意在 .vue 文件中要 import

import { mapState } from 'vuex'
computed: mapState({
	count: state => state.count
})

方式四

mapState 数组方式。注意在 .vue 文件中要 import

import { mapState } from 'vuex'
computed: {
	// mapState 对象方式
	...mapState({
		count: state => state.count
	})
}

Getters

此处就不举例说明了,详见官网说明。官网有如下解释,请仔细阅读理解:

Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

使用 $store.getters 对象

this.$store.getters.getVisible

Mutation

  • 改变 store 的状态,唯一的方法是提交 mutation。且mutation 必须是同步函数

  • 建议第二个参数是一个对象,这样可以包含多个字段并且记录的 mutation 会更易读;

  • 建议 使用常量替代 Mutation 事件类型

定义

export default new Vuex.Store({
  state: {
    // 是否显示
    visible: true
  },
  mutations: {// 同步操作,可修改
    setVisible (state, value) {
        state.visible = value
    },
  }
})

调用

this.$store.commit('setVisible', false)

Actions

store.dispatch 可以处理被触发的 action 的处理函数返回的 Promise,并且 store.dispatch 仍旧返回 Promise:

actions: {
  actionA ({ commit }) {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        commit('someMutation')
        resolve()
      }, 1000)
    })
  }
}
store.dispatch('actionA').then(() => {
  // ...
})

Modules

模块具有更高的封装度和复用性。通过添加 namespaced: true 的方式使其成为带命名空间的模块。当模块被注册后,它的所有 getter、action 及 mutation 都会自动根据模块注册的路径调整命名。

完整示例

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:05:12  更:2022-09-13 11:08:11 
 
开发: 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年11日历 -2024/11/23 9:57:11-

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