vuex

Posted yuyujuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vuex相关的知识,希望对你有一定的参考价值。

在之前的学习中,都是通过父子组件进行传参的,当多个组件依赖于同一状态时,传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。此时我们就需要用到vuex了。Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,解决了组件之间同一状态的共享问题,下面通个简单的实例开演示具体使用操作。

创建项目

和之前一样,使用脚手架快速搭建项目,在存放项目的位置打开命令行,

创建项目:vue init webpack-simple vue-vuex

下载依赖:npm install

运行项目:npm run dev

技术分享图片

项目新建成功,进行下一步

完成项目结构

本次我们要实现的功能是在一个组件中更改某个数据后,在其他组件中该数据能随之动态变化,所以我们需要先完成基本项目结构。

既然是不同组件的跳转,首先必须要安装路由:只需要在项目的根目录执行命令:npm  install  vue-router --save即可。

其次,新建组件和路由了,都是以前的知识,这里就不再重复了,具体的可以下载文末的源码查看。

技术分享图片  技术分享图片

技术分享图片

引入vuex

通常情况下,在大项目中,需要进行状态管理的数据会很多,所以更好的办法是新建一个文件专门用来存放这些需要管理的数据:

1,在项目根目录执行vuex安装命令:npm install vuex --save

2,在src目录下新建一个vuex的文件夹,在vuex文件夹里面新建一个store.js文件

3,在刚才创建的store.js文件中引入vue  引入vuex 并且use vuex

 技术分享图片

使用vuex

在使用vuex的时候,就需要用到vuex的官方网站https://vuex.vuejs.org/zh/上面提到的一些vuex的核心概念,首先是vuex,被称为单一状态数,主要是用来存储数据的;其次是mutations,用于存放改变state里面的数据的方法。具体如下所示:

1,在state中定义数据

2,在mutations里面定义方法

3,实例化 Vuex.store并进行暴露。

技术分享图片

组件中使用vuex

 首先不考虑组件中通信,单独在某个组件中使用vuex,例如在Home.vue这个组件中展示并更改数据。

1,需要引入store:import store from ‘../vuex/store.js‘;

2,注册store

3,展示数据:{{this.$store.state.count}}

4,改变,在上面定义的改变方法是实现数据自增的效果,所以这里的改变数据只是通过点击事件来触发 mutations 改变 state里面的数据,需要注意的是,在官网上面提到在触发方法的时候需要传递一个参数,方便方法中使用,这里直接是自增,不要参数,就要传递一个空置过去,不能直接省略,否则会报错。

技术分享图片

技术分享图片  技术分享图片

实现了单组件的使用后,再来看一看不同组件间的数据共享。

在上面的基础上,打开News.vue,操作步骤和上面是一样,直接使用的时候,只需要前三步就可以了,需要改变的时候,就需要通过一些方法来触发 mutations 。

技术分享图片

首先在首页中改变计数为5.技术分享图片

然后打开新闻页面,会发现计数也是5.技术分享图片

继续在新闻页中增加计数为10。技术分享图片

再回到首页。技术分享图片

代码下载:点这里

以上是关于vuex的主要内容,如果未能解决你的问题,请参考以下文章

Vuex

Vuex基本介绍

Vuex状态管理机制

Vuex笔记

vuex 基本用法

备忘录应用