美文网首页
@芥末的糖-----Vuex知识

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

作者: 芥末的糖 | 来源:发表于2018-11-11 21:23 被阅读0次

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知识

    一 1.什么是Vuex? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用...

  • @芥末的糖

    1.接下来是一段有故事的代码,如果你能看到最后,那么我相信,这些干货将会让你受益 2.要求变成//循环外:3 ...

  • @芥末的糖-----redux

    以下例子如果看不懂,就直接看总结,然后看最开始的图,然后对应代码目录结构:都在同一个目录下 1.全局注入 2.全局...

  • @芥末的糖-----PropTypes

    1.导入一个包 import PropTypes from 'prop-types' 2.使用PropTypes用...

  • @芥末的糖-----this.setState

    React通过this.state来访问state,通过this.setState来更新state。当setSta...

  • @芥末的糖-----TypeScript学习

    女友御用版TS解析 优势: -增加了代码的可阅读和可维护性 安装: 一.基础类型 布尔值 数字 number 字符...

  • @芥末的糖-----fs模块

    用node实现一个检索一个目录下面所有的文件的方法

  • 单词积累之调料(1)

    ①盐:salt ②醋:vinegar ③糖:sugar ④酱油:sauce ⑤芥末:mustard ⑥葱:shal...

  • 北海道 六花亭六色酒心糖 名古屋芥末虾片 又是仙贝故里的一款明星产品,有芥末味,但是不会太刺激,鲜虾味和淡淡芥末味...

  • @芥末的糖-----组件的定义

    1.无状态组件,函数式组件, 影子组件,傻瓜组件,UI组件 2.类的定义 总结:类的组件形式相对于函数化组件更消耗性能

网友评论

      本文标题:@芥末的糖-----Vuex知识

      本文链接:https://www.haomeiwen.com/subject/qzaxfqtx.html