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 相关文章推荐
JS实现不规则TAB选项卡效果代码
Sep 16 Javascript
零基础轻松学JavaScript闭包
Dec 30 Javascript
Vue.js手风琴菜单组件开发实例
May 16 Javascript
关于javascript sort()排序你可能忽略的一点理解
Jul 18 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
Jul 25 Javascript
探究react-native 源码的图片缓存问题
Aug 24 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
Nov 24 Javascript
在vue项目中引入高德地图及其UI组件的方法
Sep 04 Javascript
微信小程序实现banner图轮播效果
Jun 28 Javascript
Vue组件之高德地图地址选择功能的实例代码
Jun 21 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
May 20 Javascript
vue使用better-scroll实现滑动以及左右联动
Jun 30 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
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
学习python (1)
2006/10/31 Python
详细介绍Ruby中的正则表达式
2015/04/10 Python
在Django的模板中使用认证数据的方法
2015/07/23 Python
python实现web方式logview的方法
2015/08/10 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
Python当中的array数组对象实例详解
2019/06/12 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
安全事故检讨书
2014/01/18 职场文书
幼儿园春游活动方案
2014/01/19 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
几款流行的HTML5 UI框架比较(小结)
2021/04/08 HTML / CSS