VUE使用vuex解决模块间传值问题的方法


Posted in Javascript onJune 01, 2017

在看电影、打Dota、撸代码间来回,犹豫不决,终于还是下决心继续学习VUE。

仿照 conde.js 官网写的一个demo,目前已经基本可用,但始终缺少登录页,没有用户权限管理,于是开撸......

<template>
 <div id="login">
 <c-header></c-header>
 <c-form></c-form>
 <p class="content-block"><a href="javascript:;" rel="external nofollow" rel="external nofollow" @click=showState class="button button-fill button-success">登录</a></p>
 </div>
</template>

外观大概是这样的:

VUE使用vuex解决模块间传值问题的方法

两个输入项通过 c-form 组件导入

由于没有登录接口调用,初步想法是:点击登录,将c-from组件输入的值(用户名和密码)保存在 sessionStorage 中,通过判断 sessionStorage 是否保存了用户信息,来决定用户的操作权限。

现在问题来了——点击登录,如何取得 c-form 组件中的输入值?

最直接的想法就是通过子组件派生事件,父组件监听触发。转念一想,何不使用vuex来进行管理呢?正好之前从来没有认真对待过它。

LOL......

坑坑坑,我踩踩踩

终于,总结出使用 vuex 的三大步骤:

步骤1:安装和创建

安装 vuex:npm i vuex --save

创建 store.js,把基本格式写好:

import Vue from 'vue'
 import Vuex from 'vuex'
 // 首先声明一个状态 state
 const state = {
 msg: ''
 }
 // 然后给 actions 注册一个事件处理函数,当这个函数被触发时,将状态提交到 mutaions中处理
 const actions = {
 saveName({commit}, msg) {
  commit('saveMsg', msg) // 提交到mutations中处理 
 }
 }
 // 更新状态
 const mutations = {
  saveMsg(state, msg) {
  state.msg = msg;
 }
 }
 // 获取状态信息
 const getter = {
 showState(state) {
  console.log(state.msg)
 }
 }


 // 下面这个相当关键了,所有模块,记住是所有,注册才能使用
 export default new Vuex.Store{
 state,
 getter,
 mutations,
 actions
 }

步骤2:在子组件中使用(保存输入)

具体到我这里,是在c-form中使用它:

<template>
 <div>
  <input type="text" @blur=saveName(username) v-model="username" placeholder="Your name">
 </div>
</template>

<script type="text/javascript">
 // 引入mapActions,很重要
 import { mapActions } from 'vuex'
 export default {
 data() {
  return {
  username:'',
  password: ''
  }
 },
 methods: {
  ...mapActions({
  // 在input 的blur 事件中触发回调,并将输入值作为参数返回到store中
  saveName: 'saveName' 
  })
 }
 }
</script>

步骤3:获取在步骤2 中的输入值(获取state)

<template>
 <div id="login">
 <c-header></c-header>
 <c-form></c-form>
 <p class="content-block"><a href="javascript:;" rel="external nofollow" rel="external nofollow" @click=showState class="button button-fill button-success">登录</a></p>
 </div>
</template>

<script>
// 引入mapGtters,很重要
import { mapGetters } from 'vuex'
 export default {
 methods: {
  ...mapGetters([
  // 在store.js 中注册的getters
  'showState'
  ])
 },
 components: {
  "c-form": require('../components/form.vue'),
  "c-header": require('../components/header.vue')
 }
 }
</script>

至此,我们就能得到输入值了。

VUE使用vuex解决模块间传值问题的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript new一个对象的实质
Jan 07 Javascript
经典海量jQuery插件 大家可以收藏一下
Feb 07 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
Mar 01 Javascript
Js参数值中含有单引号或双引号问题的解决方法
Nov 06 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
Feb 28 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
Feb 19 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
May 17 Javascript
JS求解三元一次方程组值的方法
Jan 03 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
Oct 07 Javascript
React+Antd+Redux实现待办事件的方法
Mar 14 Javascript
vue router 传参获取不到的解决方式
Nov 13 Javascript
详解JS深拷贝与浅拷贝
Aug 04 Javascript
vue快捷键与基础指令详解
Jun 01 #Javascript
详解vuejs几种不同组件(页面)间传值的方式
Jun 01 #Javascript
Vue.js中兄弟组件之间互相传值实例
Jun 01 #Javascript
Vue.Draggable实现拖拽效果
Jul 29 #Javascript
JS请求servlet功能示例
Jun 01 #Javascript
vue.js加载新的内容(实例代码)
Jun 01 #Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
Jun 01 #Javascript
You might like
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
推荐php模板技术[转]
2007/01/04 PHP
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
python快速排序代码实例
2013/11/21 Python
Python的函数嵌套的使用方法
2014/01/24 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
python实现年会抽奖程序
2019/01/22 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
个人简历中的自我评价范例
2013/10/29 职场文书
大学生旅游业创业计划书
2014/01/29 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
签约仪式策划方案
2014/06/02 职场文书
个人总结与自我评价
2014/09/18 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
小学庆六一主持词
2015/06/30 职场文书
Python基础详解之邮件处理
2021/04/28 Python
Python如何让字典保持有序排列
2022/04/29 Python