简单的vuex 的使用案例笔记


Posted in Javascript onApril 13, 2018

1、 npm install vuex

2、 在src 下 新建文件夹 store (为什么是这个单词,vuex 是用来状态管理的,用储存一些组件的状态,取存贮,仓库之意),store 文件下 新建文件 index.js  (为什么是index.js? 在导入的时候,会第一选择这个叫index的文件)

3、 index.js import 导入 vue 和vuex (import 是es6 的语法, es5 是 require), 代码如下:

  这里的demo 是一个 改变 app 的模式 的一个appellation ,选择是 夜间模式还是白天模式

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
 state: {
 night: true,
 text: '白天',
 className: 'morning'
 },
 mutations: {
 increment (state) {
  state.night = !state.night;
  state.text = state.night === true ? '晚上' : '白天';
  state.className = state.night === true ? 'night' : 'morning';
 }
 }
})

4、 main.js import 这个index.js 代码如下:

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store' // 会找index.js 

/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 store, // 注入根组件,其他子组件 都可以引用
 template: '<App/>',
 components: { App }
})

5、使用vuex 的状态

组件1:

dom :

<div class="header" :class="model">

js

computed: {
 model() {
  return this.$store.state.className // 是ninght 还是 morning
 }
 },

注意:

:class="model" 这个class 可以绑定一个方法传参数,可以直接用 js 表达式,可以绑定一个计算属性

组件2:

dom:

<div class='modal' @click="changeModel">
 <div class="avatar">
 <img src="../../assets/img/logo.png" width="18" height="18">
 </div>
 <div class="name">
 {{currentModel}}
 </div> 
 <!-- vuex 相当于全局注入 vuex 然后取这里面的值 -->
</div>

js:

computed: {
 currentModel () {
  return this.$store.state.text
 }
 },
 methods: {
 changeModel () {
  // document.body.className='night'
  this.$store.commit('increment')
 }
 }

注意:

js 中的 currentModel 和 dom 中的 {{ currentModel }} 是一个,和 :class 可以跟表达方法一样 ,可以跟变量 ,表达方法 ,表达式 ( 这里灵活的模版方法,回头查看下源码,然后补充这的说明, vue模版为何如此强大!)

点击事件,触发方法 changeModel ,changeModel 触发 mutation 的方法,显示改变 值 ,这个是固定的语法, this.$store.commit('increment');

increment 可以在定义的时候,设置参数,传参数, this.$store.commit('increment', 'argumnet') , 在 mutation 里面  increment (state , arg) { .. = arg; ....};

截图如下:

简单的vuex 的使用案例笔记

默认方式:

如上图显示。默认的是,白天的模式,className 是 morning;

  点击事件触发模式;

简单的vuex 的使用案例笔记

再次点击的时候,可以在改回来,这个窍门,就是 index.js 里面,increment 对 night 的变量 取 对 的一个逻辑方法。跟jq 里面的 toggle,类似

简单的vuex 的使用案例笔记

结束语:

简单的vuex 的案例 ,做个笔记。希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
用JavaScript显示随机图像或引用
Apr 21 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
Jan 25 Javascript
jquery如何根据值设置默认的选中项
Mar 17 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
Nov 28 Javascript
JavaScript ParseFloat()方法
Dec 18 Javascript
尝试动手制作javascript放大镜效果
Dec 25 Javascript
老生常谈Bootstrap媒体对象
Jul 06 Javascript
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 jQuery
详解如何运行vue项目
Apr 15 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
Jun 04 Javascript
react-native 实现购物车滑动删除效果的示例代码
Jan 15 Javascript
angular实现页面打印局部功能的思考与方法
Apr 13 #Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
Apr 13 #Javascript
js捆绑TypeScript声明文件的方法教程
Apr 13 #Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
Apr 13 #Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
Apr 13 #Javascript
如何编写一个d.ts文件的步骤详解
Apr 13 #Javascript
VSCode中如何利用d.ts文件进行js智能提示
Apr 13 #Javascript
You might like
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
memcache命令启动参数中文解释
2014/01/13 PHP
PHP比你想象的好得多
2014/11/27 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
js跳转页面方法总结
2014/01/29 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
在Python下进行UDP网络编程的教程
2015/04/29 Python
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
Python安装selenium包详细过程
2019/07/23 Python
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
创建精神文明单位实施方案
2014/03/08 职场文书
法定代表人授权委托书
2014/04/04 职场文书
室内设计专业自荐信
2014/05/31 职场文书
公司任命书模板
2014/06/06 职场文书
党员争先创优承诺书
2015/01/20 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python