@芥末的糖-----Vuex知识

1.什么是Vuex?

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

个人理解:即为组件间互相传递信息

状态自管理应用包含以下几个部分:

  • state,驱动应用的数据源;
  • view,以声明方式将 state 映射到视图;
  • actions,响应在 view 上的用户输入导致的状态变化。

2.什么情况使用Vuex?

虽然 Vuex 可以帮助我们管理共享状态,但也附带了更多的概念和框架。这需要对短期和长期效益进行权衡。

如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用 Vuex。一个简单的 store 模式就足够您所需了。但是,如果您需要构建一个中大型单页应用,您很可能会考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择。

image.png

个人理解:Action是进行异步操作的,组件可以直接commit,Devtools监听的是Commit

个人理解:actions直接操作state里的状态,但是没有了时间旅行devtools

二.

1.导入Vuex

1.1导入Vuex的几种方式

  • CDN
<script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.js">
</script>
  • 模块导入(脚手架安装时可选)
npm install vuex --saveyarn add vuex
--------------------------------------------------------------------
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

1.2实例化

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  }
})
------------------------------------------------
 const vm = new Vue({
    store
    el:'root'.
})

1.3在页面调用时候

{{$store.state.count}}
--------------------------------
//会显示0

1.4在浏览器调用

store.commit('increment')
console.log(store.state.count) // -> 1

———————————————————————————————————————————————

以下是视图------>状态管理的过程!!!!!!!!!!!!!!!

2.获取Vuex状态的方法(没有actions的时候,直接commit的情况)

以下都会使用此实例的对象

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  }
})
  • 2.1.原方法
<div>{{count}}</div>
---------------------------------
 const vm = new Vue({
    computed:{
          count(){
              return this.$store.state.count
          }    
    }
})
  • 2.2.解构映射的方法
<div>{{count}}</div>
--------------------------------------
const {mapState} = Vuex

 const vm = new Vue({
    computed:mapState(['count'])
})
//将count映射出来
1.

3.获取Vuex的Mutations的方法(没有actions的时候,直接commit的情况)

  • 状态管理
<div @click=''getMutations">{{count}}</div>
--------------------------------------
const {mapState} = Vuex

 const vm = new Vue({
    methods:{
        getMutations(){
            this.$store.commit('getMutations')
      }
    }
})

3.2..原方法(传参的话用原方法)

<div @click=''increment ">{{count}}</div>
//--------------------------------------
const {mapMutations} = Vuex

 const vm = new Vue({
    methods:matMutattions([
        increment 
    ])
})

4.有actions情况!!!!!!!!!!

 const vm = new Vue({
    methods:{
        ...matMutattions([
            increment 
        ])
    }

有其他方法都可以添加,在方法里使用this.$store.dispatch(' ( actions里面的方法) ')!!

视图里的方法都需要dispatch,而不是原来的commit,此时commit操作在actions里面执行!!

总结

Vue注意的事项:先把所有的链都写出来,即使是actions是同步的!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Vuex是什么? Vuex 是一个专为 Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件...
    萧玄辞阅读 3,154评论 0 6
  • 目录 组件化 组件通信 状态管理 Vuex 是什么 Vuex 有什么特点 Vuex 解决了什么问题 什么类型的数据...
    前端小华子阅读 2,016评论 0 16
  • Vuex 的学习记录 资料参考网址Vuex中文官网Vuex项目结构示例 -- 购物车Vuex 通俗版教程Nuxt....
    流云012阅读 1,474评论 0 7
  • Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应...
    白水螺丝阅读 4,691评论 7 61
  • 安装 npm npm install vuex --save 在一个模块化的打包系统中,您必须显式地通过Vue.u...
    萧玄辞阅读 2,969评论 0 7