简单的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 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
Apr 01 Javascript
JQuery的AJAX实现文件下载的小例子
May 15 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
jquery.map()方法的使用详解
Jul 09 Javascript
JS+CSS实现滑动切换tab菜单效果
Aug 25 Javascript
jquery中validate与form插件提交的方式小结
Mar 26 Javascript
js获取当前时间(昨天、今天、明天)
Nov 23 Javascript
简单谈谈vue的过渡动画(推荐)
Oct 11 Javascript
微信小程序页面缩放式侧滑效果的实现代码
Nov 15 Javascript
详解javascript对数组和json数组的操作
Apr 15 Javascript
jQuery实现简单弹幕效果
Nov 28 jQuery
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人民币金额数字转中文大写的函数代码
2013/02/27 PHP
深入array multisort排序原理的详解
2013/06/18 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
详解php的socket通信
2015/08/11 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
vue实现文件上传功能
2018/08/13 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
python实现分页效果
2017/10/25 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
使用Python pip怎么升级pip
2020/08/11 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
EJB的几种类型
2012/08/15 面试题
迷你西餐厅创业计划书范文
2013/12/31 职场文书
校友会欢迎辞
2014/01/13 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
秦兵马俑导游词
2015/02/02 职场文书
西安导游词
2015/02/12 职场文书
在Docker容器中部署SQL Server
2022/04/11 Servers
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server