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 RadioButtonList获取选中值
Apr 09 Javascript
JS自定义对象实现Java中Map对象功能的方法
Jan 20 Javascript
Javascript中arguments和arguments.callee的区别浅析
Apr 24 Javascript
node.js中格式化数字增加千位符的几种方法
Jul 03 Javascript
JavaScript中定义对象原型的两种使用方法
Dec 15 Javascript
BootStrap3使用错误记录及解决办法
Dec 22 Javascript
angularjs点击图片放大实现上传图片预览
Feb 24 Javascript
AngularJS自定义过滤器用法经典实例总结
May 17 Javascript
分享5个顶级的JavaScript Ajax组件库
Sep 16 Javascript
JavaScript实现简单轮播图效果
Dec 01 Javascript
js实现简单点赞操作
Mar 17 Javascript
vue单应用在ios系统中实现微信分享功能操作
Sep 07 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
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
PHP5 面向对象程序设计
2008/02/13 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
详谈PHP编码转换问题
2015/07/28 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
常用PHP封装分页工具类
2017/01/14 PHP
jquery常用特效方法使用示例
2014/04/25 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
Python访问纯真IP数据库脚本分享
2015/06/29 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
Python subprocess模块常见用法分析
2018/06/12 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
Python subprocess库的使用详解
2018/10/26 Python
python实现任意位置文件分割的实例
2018/12/14 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
我的长生果教学反思
2014/04/28 职场文书
个人综合鉴定材料
2014/05/23 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS