vuex简单---->复杂---->模块

话不多说,开干。

首先,使用vue-cli3创建一个项目

选择最后一个

选择自己需要的功能,安装之

最终项目的目录如下:

为了使讲解更简单明了,我们修改一下目录下的一些文件,将app.vue下的文件都注释掉,如下图:

现在我们开始一个最简单的vuex应用。打开store.js文件,编辑如下 :

打开App.vue文件,编辑如下:

main.js文件不需要做修改,然后启动项目:

最终显示结果如下:

是的,这就是最简单的一个vuex应用了。

State

如果世界上任何事情都是如此简单,那这个世界就太美好了,可是现实是残酷的。当一个组件需要获取多个状态的时候,将这些状态都声明为计算属性会有些重复和冗余。所以就有了mapState这个辅助函数,它可以生成计算属性,让你偷个懒。修改store.js文件如下:

然后修改App.vue文件如下:

但是我还是想再偷偷懒,修改App.vue文件如下 :

怎么样,又少写了很多吧,但是呢我实在懒的不行,于是再修改App.vue如下 :

到这儿,小伙伴们应该想着够简单的了,不会再有比这更简单的了,呵呵,对!你又猜到了,还有更好的写法。另外,我也不喜欢computed对象后面跟着一个函数运算,感觉好怪,我更喜欢后面直接跟着一个花括号{},保持原有的展示风格,心里很舒爽。

mapState函数返回的是一个对象。如何将它与局部计算属性混合使用呢?通常,我们需要使用一个工具函数将多个对象合并为一个,以使我们可以将最终对象传给 computed 属性,自从有了对象展开运算符,可以极大的简化写法,修改App.vue文件如下:

好了,到了这里,关于state应该是现有最终极的用法了。但是,仅仅拥有state是不够的,有些时候需要从state中派生出一些状态,对数据进行过滤并计算。这个时候,getter出现了。

Getter

Vuex允许在store中定义‘getter‘(可以认为是store的计算属性),这段红字一定要记住方便我们理解。

Getter接受state作为第一个参数:修改store.js文件如下:

修改App.vue文件如下:

最终页面展示如下:

Getter也可以接受其他的getter作为第二个参数,修改store.js如下:

修改App.vue文件如下:

页面展示:

可以通过让getter返回一个函数,来实现给getter参数。修改store.js如下:

修改App.vue如下:

展示如下:

getter当然也有它的辅助函数 mapGetters,如果对mapState辅助函数已经了解的话,这里应该不是问题。

原文地址:https://www.cnblogs.com/adhehe/p/10090045.html

时间: 2024-10-09 11:54:41

vuex简单---->复杂---->模块的相关文章

【模块化编程】理解requireJS-实现一个简单的模块加载器

在前文中我们不止一次强调过模块化编程的重要性,以及其可以解决的问题: ① 解决单文件变量命名冲突问题 ② 解决前端多人协作问题 ③ 解决文件依赖问题 ④ 按需加载(这个说法其实很假了) ⑤ ...... 为了深入了解加载器,中间阅读过一点requireJS的源码,但对于很多同学来说,对加载器的实现依旧不太清楚 事实上不通过代码实现,单单凭阅读想理解一个库或者框架只能达到一知半解的地步,所以今天便来实现一个简单的加载器 加载器原理分析 分与合 事实上,一个程序运行需要完整的模块,以下代码为例: 1

vuex简单示例

一.vuex是什么,解决了什么问题? 官方解释是:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.个人理解是因为vue各个组件是相对独立的,要共享数据,就变的很麻烦.vuex就是为了解决各个组件传递数据与共享数据. 二.vuex的核心概念 vuex的核心概念是store,store中包括了state,mutation,action,getter 1.state:需要用到的状态变量2.mut

PHP+jQuery 简单注册模块

/* ******* 环境: Apache2.2.8 + PHP5.2.6 + MySQL5.0.51b + jQuery-1.8.3.min.js ************** 其他组件:Zend_mail( Zend_framework 1.11.11 )******* Date:2014-09-25******* Author:小dee******* Blog:http://www.cnblogs.com/dee0912/*/ 写了一个简单的PHP+jQuery注册模块,需要填写的栏目包括

几句话简单解释模块包类的区别和关系

1:类:实现新的对象,由class语句创建,简单说是一串代码 2:模块:由一些函数,变量,类组成,可以被调用,简单说就是一个以.py结尾的文件 3:包:包将有联系的/方向大致相同的模块组织在一起,,简单说就是一个文件夹,但是需要注意的是每个目录下都有__init__.py文件,这也是包和文件夹的区别,注意:包中可能也有子包,在子包的目录中,也需要有__init__.py文件.

ThinkPHP 3.2.3 简单后台模块开发(一)常用配置

一.项目分组 下载解压 ThinkPHP 3.2.3,在默认的应用 Application(./Application) 中,包含一个默认的模块 Home(./Application/Home). 需要在该默认应用中创建一个用于后台管理的 Admin 模块,可以通过在应用入口文件(./index.php)中绑定 Admin 模块来 自动生成 Admin 模块: define('BIND_MODULE','Admin'); 此时访问 http://serverName/index.php 便会自动

(二)最简单的模块源码分析

一.常用的模块操作命令(1)lsmod(list module,将模块列表显示),功能是打印出当前内核中已经安装的模块列表 (2)insmod(install module,安装模块),功能是向当前内核中去安装一个模块,用法是insmod xxx.ko(3)modinfo(module information,模块信息),功能是打印出一个内核模块的自带信息.,用法是modinfo xxx.ko(4)rmmod(remove module,卸载模块),功能是从当前内核中卸载一个已经安装了的模块,用

vue_cli下开发一个简单的模块权限系统之建立登录页面并且实现在浏览器输入地址出现内容

新建一个Login.vue(登录页面,先把Hello.vue的内容复制过来即可) 然后我们打开router下面的index.js,第一个箭头:(引入vue路由)第二个箭头(引入我们新建的Login.vue页面)第三个箭头(我们要使用这个路由)第四个箭头(配置路由,path表示在浏览器中输入的路由名称) 然后我们在浏览器中输入这个login页面的地址,就会出来内容了,这样一个简单的页面就建成了 因为我们要使用semantic-ui,所以我们安装一下semantic-ui,进入到命令行界面输入npm

5.2.4.最简单的模块源码分析3

printk:printk内核态,printf用户态(没什么用) 打印级别内核把级别比命令行低的所有消息显示在终端(console)上.但是所有信息都会记录在printk的"ring buffer"中. cat /proc/sys/kernel/printk(4 4 1 7)(比4小的能显示) echo 4 > /proc/sys/kernel/printk(更改级别) 但是Ubuntu中中不管级别是怎样,都不能显示,必须dmesg日志等级: 头文件: include <l

5.2.3.最简单的模块源码分析2

本节主要讲解了模块的卸载过程.MODULE_LICENSE等信息添加宏和__init.__exit宏. static 声明函数,全局变量,则它们不能被其它文件函数调用 声明静态局部变量,具有记忆功能.它与其他普通局部变量区别:static局部变量只被初始化一次,下一次的运算依据上一次的结果值. __init:一个宏定义,__cold notrace标记内核启动时所用的初始化代码,内核启动完成后就不再使用.__section(.init.text)其修饰的内容放到.init.text段中 defi