zoukankan      html  css  js  c++  java
  • 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文件夹下面的store.js里面的内容如下:

    现在在此基础上进行改造。

    1,首先,在vuex文件夹下面新建index.js和mutations.js两个文件

     

    2,然后,将之前store.js里面的内容进行分割:index.js作为入口文件,把我们需要的文件 都引入里面 ,注入并导出;store.js用来初始化和存储数据,mutations.js用来操作数据。

     

    3,接下来,修改使用方式,在上面的例子中,我们是在需要使用的地方进行引入,每次需要操作三次。

     

    现在,只需要在main.js中一次性引入  在需要使用的地方直接使用就可以了。

     

    数据持久化

    vuex的作用是多组件共享数据和状态,在上面我们已经看到了它的一部分作用。现在存在的问题是,刷新之后,数据就会被清空。在上面的例子中,当我们不停的点击,把数据加的足够大的时候,刷新浏览器,我们会发现,数据回到了默认的初始值。这个影响不是很大,如果我们使用这种方式记录用户的登录状态,刷新浏览器之后,登录状态丢失,用户体验就非常不好了,因此,需要将vuex和本地进行存储,为了便于演示,再添加一个数据,形成对比(添加和使用同第一个数据一样)。

    然后将存储薪水的数据在本地进行存储,主要是在随数据进行操作的时候,及时更新本地存储。

    然后取数据的时候,从本地取。

    现在来进行测试:

    首先是操作两个数据:

    然后刷新浏览器:

    这样数据就不会因为刷新浏览器而丢失了。

    代码下载:点这里

  • 相关阅读:
    MDX Step by Step 读书笔记(六) Building Complex Sets (复杂集合的处理) Filtering Sets
    在 Visual Studio 2012 开发 SSIS,SSAS,SSRS BI 项目
    微软BI 之SSIS 系列 在 SSIS 中读取 SharePoint List
    MDX Step by Step 读书笔记(五) Working with Expressions (MDX 表达式) Infinite Recursion 和 SOLVE_ORDER 原理解析
    MDX Step by Step 读书笔记(五) Working with Expressions (MDX 表达式)
    使用 SQL Server 2012 Analysis Services Tabular Mode 表格建模 图文教程
    MDX Step by Step 读书笔记(四) Working with Sets (使用集合) Limiting Set and AutoExists
    SQL Server 2012 Analysis Services Tabular Model 读书笔记
    Microsoft SQL Server 2008 MDX Step by Step 学习笔记连载目录
    2011新的开始,介绍一下AgileEAS.NET平台在新的一年中的发展方向
  • 原文地址:https://www.cnblogs.com/yuyujuan/p/9860752.html
Copyright © 2011-2022 走看看