vueX基础知识点笔记

栏目: IT技术 · 发布时间: 4年前

内容简介:vuex是专门用来管理vue.js应用程序中状态的一个插件。他的作用是将应用中的所有状态都放在一起,集中式来管理。需要声明的是,这里所说的状态指的是vue组件中data里面的属性。简单的来说,它就是存储公共变量的东西,然后插件可以通过它来访问,或者修改数据,来达到响应式.

vuex是专门用来管理vue.js应用程序中状态的一个插件。他的作用是将应用中的所有状态都放在一起,

集中式来管理。需要声明的是,这里所说的状态指的是vue组件中data里面的属性。简单的来说,

它就是存储公共变量的东西,然后插件可以通过它来访问,或者修改数据,来达到响应式.

相当于一个仓库,里面可以放很多公共的东西,而这些公共的东西都可以让组件使用.

首先做这个之前,我们下载好vuex插件,怎么下载呢 用到我们的npm run vuex --save

下载好 开始配置

首先在src文件下创建个store文件 里面再新建一个index.js

1. 导入Vue--->import Vue from "vue"

2. 导入Vuex--->import Vuex form "./vuex"

3. Vue.use(Vuex)

4.

export default new Vuex.Store({

state:{},

mutations:{},

getters:{}

actions:{},

modules:{}

})

这就是vueX的配置环境

在这里我们需要注意,我们用的是Vuex.Store这个功能,所以在新建时用的Vuex.Store,

就是为了在所有组件中使用都可以有这个方法.

接下来我们介绍一下vuex的属性

state:

一个项目里面,只有一个store,不要建立多个store,所有的数据放在state中就可以了.(单一数据源state)

getters:

数据需要经过一系列变化,然后通过使用getters定义一个方法,然后调用的时候通过$store.getters.方法名来调用

通过三个小例子带着了解一下getters属性

state定义了students的信息如下

students: [

      { id: 110, name: "juelebao", age: 17 },

      { id: 111, name: "zhangsan", age: 19 },

      { id: 112, name: "liuyifei", age: 21 },

      { id: 113, name: "zhoujielun", age: 24 }

    ]

三个小要求:

1. 我们现在需要将学生信息里面年龄超过20的取出来

2. 取出超过20岁学生的个数

3. 我们想要通过id进行查询,需要往里面传参数

以上要求均要通过vuex里面的getters属性定义方法

第一个: 需要将学生信息里面年龄超过20的取出来

over20(state){

return state.students.filter( obj =>{

return obj.age>20

})

}

定义这样一个方法就可以了,调用时$store.getters.over20

第二个: 取出超过20岁学生的个数

方法一:

over20count(state){

  return state.students.filter( obj=> {

    return obj.age > 20

}).length

}

方法二: 告诉我们也可以调用getters里面的方法

over20count(state,getters){

  return getters.over20.length

}

方法三:在调用的时候加length 也就是 $store.getters.over20.length

当然,我们这些方法在正确调用后,就可以得到结果了

这就是getter一些用法了

简单举个例子之前做过的计数器

我们现在将计算器封装成一个组件,然后我们将他放到挂载的页面上

connter.vue代码以及另一组件(组件2个共用vuex中的数据)

vueX基础知识点笔记

vueX基础知识点笔记

这里我们将connter放在state中,将事件方法放在mutations中,

注意,我们在创建increment和decrement事件的时候,传入了state,如果你不写的话,虽然不会报错,但是页面会没有任何变化.所以必须要有一个参数接收,然后利用接收的参数去访问connter变量.然后我们就去connter组件中定义两个事件了,add和down,当然我们是通过在方法中使用this.$store.commit("vuex中的mutations中的事件类型")比如我的add中的this.$store.commit("increment")然后就相当于执行了increment这个操作.

疑问: 在组件中如何访问呢?

在组件中,我们可以这样访问 $store.state.connter在down中用法和add一样

注意:

我们可以通过mutations方式改变数据,而非直接改变数据$store.state ++,这是因为这样vuex对象可以监听或者追踪到数据的改变. 方便我们的调试这就是vuex最基本的一个使用了

补充:mutations 携带参数用法

mutations是vuex唯一的提交更新的一种方式,在今后写项目的时候,如果要用vuex我们必须要用这种方式来对数据进行更新. 不能越过这个直接进行更改.

下面,我们还是来学习mutations携带参数的用法

还是计数器,我们现在想用动态传递参数的方式来进行计数,比如count为任意数时上代码吧 借助代码帮我们理解

组件connter中

 <button @click="incrementCount(5)">+5</button>

 <button @click="incrementCount(10)">+10</button>

methods:{

incrementCount(count){

       this.$store.commit("decrementCount",count)

     }

}

vuex中的mutations:

 decrementCount(state,count){

     state.connter+=count

 }

这样我们就可以进行参数传递了.

二个例子,就是我们可不可以传递学生的信息?答案肯定是可以的

例如代码:

addStu(){

  var stu = { id : 114,name:"lisi",age: 21 }

  this.$store.commit("addStud",stu)

}

结合vuex中的mutations定义的

addStu(state,stu){

  state.students.push(stu)

}

关于mutation的提交风格

这里面的参数pyload被称为负载,就是讲这个地方的数据上传,可以是对象,可以是一个值

如果是学生信息的话直接就传过去一个对象就可以

第一种:

fucn(){

this.$store.commit("事件类型",pyload)

}

第二种:

fucn(){

this.$store.commit({

type:"事件类型",

pyload:pyload

})

}

两种分隔写法不一样,在vuex中的mutations中接收值也是不一样的

第一种方式接收的时候,pyload是什么就是什么

第二种方式接收的时候,pyload是整个的一个对象.

这样我们就搞定了mutations携带参数了,注意一下,在mutations中定义的方法,里面的参数第一个参数就是state不能改变.

今天简单总结了下,还有一些属性还没有学,明天学了再拿出来.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序化广告实战

程序化广告实战

吴俊 / 机械工业出版社 / 2017-8-15 / 79.00元

中国程序化广告领域领袖级专家,私有化程序购买领域的布道者的一线实战笔记,宋星等近20位专家联袂推荐。从业务和技术双重视角系统讲解程序化广告的理论、知识、实践方法和关键要点。一起来看看 《程序化广告实战》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换