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 相关文章推荐
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
Dec 02 Javascript
javascript实现五星评分功能
Nov 10 Javascript
js实现楼层效果的简单实例
Jul 15 Javascript
JavaScript获取URL中参数querystring的方法详解
Oct 11 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
Dec 28 Javascript
jQuery读取XML文件的方法示例
Feb 03 Javascript
jQuery Validate 校验多个相同name的方法
May 18 jQuery
JS基于正则实现数字千分位用逗号分隔的方法
Jun 16 Javascript
JavaScript学习教程之cookie与webstorage
Jun 23 Javascript
vue图片加载失败时用默认图片替换的方法
Aug 29 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
javascript条件式访问属性和箭头函数介绍
Nov 17 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警告错误信息的解决方法
2013/06/03 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
php实现微信企业转账功能
2018/10/02 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
2013/09/21 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
详解python字节码
2018/02/07 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
Numpy之文件存取的示例代码
2018/08/03 Python
python numpy存取文件的方式
2020/04/01 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
史上最全面的Java面试题汇总!
2015/02/03 面试题
护士检查书
2014/01/17 职场文书
环保倡议书500字
2014/05/15 职场文书
班级团队活动方案
2014/08/14 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
小学思品教学反思
2016/02/20 职场文书
python装饰器代码解析
2022/03/23 Python
Elasticsearch 索引操作和增删改查
2022/04/19 Python