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 相关文章推荐
vue实现简单表格组件实例详解
Apr 16 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
May 17 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
Jul 12 Javascript
layui框架中layer父子页面交互的方法分析
Nov 15 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 Javascript
解析vue data不可以使用箭头函数问题
Jul 03 Javascript
webstrom Debug 调试vue项目的方法步骤
Jul 17 Javascript
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 Javascript
vue 利用路由守卫判断是否登录的方法
Sep 29 Javascript
vue实现的双向数据绑定操作示例
Dec 04 Javascript
vuex入门最详细整理
Mar 04 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
Jul 22 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
php中apc缓存使用示例
2013/12/25 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
js 日期转换成中文格式的函数
2009/07/07 Javascript
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
vue-router 权限控制的示例代码
2017/09/21 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
在Python中实现贪婪排名算法的教程
2015/04/17 Python
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
公益活动邀请函
2014/02/05 职场文书
实习报告评语
2014/04/26 职场文书
大学生社会实践感想
2015/08/11 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python