简单的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 相关文章推荐
三级下拉菜单的js实现代码
May 23 Javascript
javascript创建createXmlHttpRequest对象示例代码
Feb 10 Javascript
js中confirm实现执行操作前弹出确认框的方法
Nov 01 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
Sep 04 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
Jan 06 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
Jan 06 Javascript
Vue 滚动行为的具体使用方法
Sep 13 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
Aug 26 Javascript
Layui动态生成select下拉选择框不显示的解决方法
Sep 24 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
Nov 19 Javascript
jQuery实现轮播图效果demo
Jan 11 jQuery
Vue仿Bibibili首页的问题
Jan 21 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
php写入、删除与复制文件的方法
2015/06/20 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
PHP实现递归的三种方法
2020/07/04 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
JS面向对象编程详解
2016/03/06 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
小学教师师德感言
2014/02/10 职场文书
学习十八大的心得体会
2014/09/01 职场文书
2015年新农合工作总结
2015/03/30 职场文书
学生会工作感言
2015/08/07 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记