VUEX 的使用学习一

vuex,使用,学习 · 浏览次数 : 53

小编点评

**一、Vuex是什么?** Vuex 是一个专为 Vue 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 **二、什么时候应该用到Vuex呢?** * 小应用不建议使用 Vuex,因为小项目使用 Vuex 可能会比较繁琐冗余。 * 中大型单页应用,因为要考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择。 **三、对于使用Vuex的理解是什么?** 由于Vue是单向数据流,子组件内部不能直接修改从父级传递过来的数据,子组件与子组件之间无法相互传递数据。如果想让两个子组件之间进行通信的话,可以借助子组件 A 向父组件传值,父组件接收子组件 A 的数据后再传给 B 组件这样的方式进行通信。但这样会有一个问题,就是如果子组件 A 的父组件上面还有一层爷爷组件,或者还有更多祖父类型的层级,那么是不是会很麻烦。因此,我们会想到能不能将一个共有的数据存在一个特定的地方,用的时候自己去拿,这样就不需要一层层传值,于是乎 Vuex 就应运而生。 **四、vuex由五部分组成(五种状态/五种属性)** * state: 数据 * mutations: can包含异步操作 * actions: 唯一可以修改state数据的场所 * getters: 类似于vue组件中的计算属性,对state数据进行计算(会被缓存) * modules: 模块化管理store,每个模块拥有自己的 state、mutation、action、getter **五、安装配置** 1. npm i vuex --save/-S 2. 创建store.js 3. 挂载使用 Vue.use(vuex) 4. const store = new Vuex.Store({...配置项}) 5. 导出 export default store 6. 导入main.js 在根实例配置 store 选项指向 store 实例对象

正文

转载请注明出处:

一、Vuex是什么?

  介绍:Vuex 是一个专为 [Vue](https://so.csdn.net/so/search?q=Vue&spm=1001.2101.3001.7020).js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。他可以方便实现组件之间的数据共享

  理解:核心就是 store(仓库),仓库是用来干什么的?你就当它用来储存东西的。

 二、我们什么时候应该用到Vuex呢?

  a.小应用不建议使用Vuex,因为小项目使用 Vuex 可能会比较繁琐冗余;

  b.中大型单页应用,因为要考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择;

三、对于使用Vuex的理解是什么?

  由于Vue是单向数据流,子组件内部不能直接修改从父级传递过来的数据,子组件与子组件之间无法相互传递数据。如果我们想让两个子组件之间进行通信的话,可以借助子组件 A 向父组件传值,父组件接收子组件 A 的数据后再传给 B 组件这样的方式进行通信。

  但是这样会有一个问题,就是如果子组件 A 的父组件上面还有一层爷爷组件,或者还有更多祖父类型的层级,那么是不是会很麻烦。

  因此,我们会想到能不能我们将一个共有的数据存在一个特定的地方,用的时候自己去拿,这样就不需要一层层传值,于是乎 Vuex 就应运而生了。

  

 

 

 

四、vuex由五部分组成(五种状态/五种属性)

  

  • state: 数据

  • actions:可以包含异步操作

  • mutations: 唯一可以修改state数据的场所

  • getters: 类似于vue组件中的计算属性,对state数据进行计算(会被缓存)

  • modules:模块化管理store(仓库),每个模块拥有自己的 state、mutation、action、getter

  

五、安装配置

  第一步:npm i vuex --save/-S

  第二步: 创建store.js

  第三步:挂载使用 Vue.use(vuex)

  第四步:const store = new Vuex.Store({...配置项})

  第五步:导出 export default store

  第六步:导入main.js 在根实例配置 store 选项指向 store 实例对象

  具体操作步骤:

  安装

npm install vuex

  创建store.js 

import Vue from 'vue'
// 初始化一个vuex的实例(数据仓库) 导出即可
import Vuex from 'vuex'
import axios from 'axios'

// 使用安装
Vue.use(Vuex)

// 初始化,并声明:state,mutations,actions,getters等属性
export default new Vuex.Store({
  state: {
    // 所有的任务列表
    list: [],
    // 文本框的内容
    inputValue: 'aaa',
    // 下一个Id
    nextId: 5,
    viewKey: 'all'
  },
  mutations: {
    // 清除已完成的任务
    cleanDone(state) {
      state.list = state.list.filter(x => x.done === false)
    },
    // 修改视图的关键字
    changeViewKey(state, key) {
      state.viewKey = key
    }
  },
  actions: {
    getList(context) {
      axios.get('/list.json').then(({ data }) => {
        // console.log(data)
        context.commit('initList', data)
      })
    }
  },
  getters: {
    // 统计未完成的任务的条数
    unDoneLength(state) {
      return state.list.filter(x => x.done === false).length
    },
  }
})

  把store对象挂载到Vue实例中,可以在main.js 中进行绑定

import store from './store.js'
import App from './App.vue'

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

 

  在网上找到一个demo 示例,可参考学习: https://gitee.com/xiangbaxiang/vue-store

与VUEX 的使用学习一相似的内容:

VUEX 的使用学习一

转载请注明出处: 一、Vuex是什么? 介绍:Vuex 是一个专为 [Vue](https://so.csdn.net/so/search?q=Vue&spm=1001.2101.3001.7020).js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态

VUEX 使用学习六 : modules

转载请注明出处: 当Store中存放了非常多非常大的共享数据对象时,应用会变的非常的复杂,Store对象也会非常臃肿,所以Vuex提供了一个Module模块来分隔Store。通过对Vuex中的Store分隔,分隔成一个一个的Module模块,每个Module模块都拥有自己的state、mutatio

VUEX 使用学习五 : getter

转载请注明出处: Getter对Store中的数据进行加工处理形成新的数据。他不会修改state中的原始数据,起到的是包装数据的作用; 有时我们需要从 store 中的 state 中派生出一些状态,例如对列表进行过滤并计数 如果有多个组件需要用到此属性,我们要么复制这个函数,或者抽取到一个共享函数

VUEX 使用学习三 : mutations

转载请注明出处: 在 Vuex 中 store 数据改变的唯一方法就是提交 mutations。mutations里面装着一些改变数据方法的集合,这是Vuex 设计很重要的一点,就是把处理数据逻辑方法全部放在 mutations 里面,使得数据和视图分离。 通过这种方式虽然操作起来稍微繁琐一些,但是

VUEX 的使用学习二: state

转载请注明出处: state 提供唯一的数据资源,所有的共享的数据都要统一放到store 中的state中进行存储; 状态state用于存储所有组件的数据。 管理数据 // 初始化vuex对象 const store = new vuex.Store({ state: { // 管理数据 count

VUEX 使用学习四 : action

转载请注明出处: action 用于处理异步任务;action,可以操作任意的异步操作,类似于mutations,但是是替代mutations来进行异步操作的。首先mutations中必须是同步方法,如果使用了异步,虽然页面上的内容改变了,但实际上Vuex.Store没有监听到数据的更新 如果通过异

vue中新的状态管理器-pinia

背景 对于pinia的使用,可参考官方文档在这不做过多赘述。这边主要来讲讲pinia中 少用且好用的方法,为什么我们选择pinia而不用vuex ps: 以下写法全部基于组合式API 使用方式: 先下载依赖 npm i pinia -s 在vue3中,main.js这么写 import { crea

Vuex 4与状态管理实战指南

title: Vuex 4与状态管理实战指南 date: 2024/6/6 updated: 2024/6/6 excerpt: 这篇文章介绍了使用Vuex进行Vue应用状态管理的最佳实践,包括为何需要状态管理,Vuex的核心概念如store、actions、mutations和getters,以及

vue3 快速入门系列 —— 状态管理 pinia

其他章节请看: vue3 快速入门 系列 Pinia vue3 状态管理这里选择 pinia。 虽然 vuex4 已支持 Vue 3 的 Composition API,但是 vue3 官网推荐新的应用使用 pinia —— vue3 pinia 集中式状态管理 redux、mobx、vuex、pi

Nuxt.js 深入浅出:目录结构与文件组织详解

摘要:本文详述了Nuxt.js框架中关键目录与配置文件的作用及使用方法,包括布局设定、页面结构管理、插件集成、静态资源处理、 Vuex状态管理、项目配置文件nuxt.config.js详解以及package.json、.eslintrc.js、.babelrc等辅助配置文件的配置方式,为构建高效Nu...