简单的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 自适应高度[在IE6 IE7 FF下测试通过]
Apr 13 Javascript
jquery选择器、属性设置用法经验总结
Sep 08 Javascript
JavaScript事件委托的技术原理探讨示例
Apr 17 Javascript
jQuery中animate()方法用法实例
Dec 24 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
Aug 06 Javascript
JS中的JSON对象的定义和取值实现代码
May 09 Javascript
对angularJs中自定义指令replace的属性详解
Oct 09 Javascript
vue添加class样式实例讲解
Feb 12 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
Sep 18 Javascript
JS实现动态星空背景效果
Nov 01 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
Nov 07 Javascript
React Hooks 实现和由来以及解决的问题详解
Jan 17 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选择排序法实现数组排序实例分析
2015/02/16 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
jquery 3D球状导航的文章分类
2010/07/06 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
js有序数组的连接问题
2013/10/01 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
如何利用node转发请求详解
2020/09/17 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python selenium抓取微博内容的示例代码
2018/05/17 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
大学生志愿者活动总结
2014/06/27 职场文书
语文教研活动总结
2014/07/02 职场文书
2014年教学工作总结
2014/11/13 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
人与自然观后感
2015/06/16 职场文书
话题作文之成长
2019/12/09 职场文书
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
vue中div禁止点击事件的实现
2022/04/02 Vue.js