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函数
May 27 Javascript
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
jQuery的Ajax时无响应数据的解决方法
May 25 Javascript
浅谈javascript的原型继承
Jul 25 Javascript
location.href用法总结(最主要的)
Dec 27 Javascript
JavaScript实现斗地主游戏的思路
Feb 29 Javascript
微信小程序 页面跳转传递值几种方法详解
Jan 12 Javascript
JS对象深度克隆实例分析
Mar 16 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
Oct 10 Javascript
微信小程序开发问题之wx.previewImage
Dec 25 Javascript
jQuery实现简易聊天框
Feb 08 jQuery
JS中的继承操作实例总结
Jun 06 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提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
python解析xml文件操作实例
2014/10/05 Python
浅析Python中的多进程与多线程的使用
2015/04/07 Python
python实现爬取图书封面
2018/07/05 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
Django文件上传与下载(FileFlid)
2019/10/06 Python
python读取Kafka实例
2019/12/23 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
商务英语应届生自我鉴定
2013/12/08 职场文书
洗煤厂厂长岗位职责
2014/01/03 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
高三学习决心书
2014/03/11 职场文书
学校安全责任书范本
2014/07/23 职场文书
法制教育演讲稿
2014/09/10 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
加强作风建设工作总结
2014/10/23 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
倡议书范文大全
2015/04/28 职场文书
欠条格式范本
2015/07/03 职场文书
高中政治教师教学反思
2016/02/23 职场文书