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 相关文章推荐
跨浏览器的事件对象介绍
Jun 27 Javascript
js数组Array sort方法使用深入分析
Feb 21 Javascript
Javascript代码实现仿实例化类
Apr 03 Javascript
JavaScript合并两个数组并去除重复项的方法
Jun 13 Javascript
表单验证正则表达式实例代码详解
Nov 09 Javascript
React-native桥接Android原生开发详解
Jan 17 Javascript
npm全局模块卸载及默认安装目录修改方法
May 15 Javascript
vue实现中部导航栏布局功能
Jul 30 Javascript
js实现图片粘贴到网页
Dec 06 Javascript
基于JQuery实现页面定时弹出广告
May 08 jQuery
JS字符串和数组如何实现相互转化
Jul 02 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
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
WINXP下apache+php4+mysql
2006/11/25 PHP
php删除数组元素示例分享
2014/02/17 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
js 分栏效果实现代码
2009/08/29 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
jQuery+ajax的资源回收处理机制分析
2017/01/07 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
浅谈Python中copy()方法的使用
2015/05/21 Python
python提取页面内url列表的方法
2015/05/25 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
提升python处理速度原理及方法实例
2019/12/25 Python
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
学校后勤岗位职责
2014/02/19 职场文书
小学生环保标语
2014/06/13 职场文书
2014年度思想工作总结
2014/11/27 职场文书
部门2015年度工作总结
2015/04/29 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL