简单的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 导出数据到Excel(处理table中的元素)
Dec 18 Javascript
jQuery-Tools-overlay 使用介绍
Jul 14 Javascript
jquery中的过滤操作详细解析
Dec 02 Javascript
javascript实现倒计时并弹窗提示特效
Jun 05 Javascript
javascript url几种编码方式详解
Jun 06 Javascript
js实现文本上下来回滚动
Feb 03 Javascript
JS实现li标签的删除
Apr 12 Javascript
通过扫小程序码实现网站登陆功能
Aug 22 Javascript
VUE实现密码验证与提示功能
Oct 18 Javascript
JS几个常用的函数和对象定义与用法示例
Jan 15 Javascript
vue首次渲染全过程
Apr 21 Vue.js
vue使用element-ui按需引入
May 20 Vue.js
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
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
json 入门基础教程 推荐
2009/10/31 Javascript
Js 中debug方式
2010/02/07 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
JS中表单的使用小结
2014/01/11 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
jQuery ztree实现动态树形多选菜单
2016/08/12 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
Python实现多线程下载文件的代码实例
2014/06/01 Python
python的re模块应用实例
2014/09/26 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
python列表生成器迭代器实例解析
2019/12/19 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
Python 如何对文件目录操作
2020/07/10 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
计生专干事迹
2014/05/28 职场文书
小学中队长竞选稿
2015/11/20 职场文书
Python基础之数据结构详解
2021/04/28 Python