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 相关文章推荐
广告显示判断
Aug 31 Javascript
js和jquery使按钮失效为不可用状态的方法
Jan 26 Javascript
javascript的tab切换原理与效果实现方法
Jan 10 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
Jun 24 Javascript
javascript记住用户名和登录密码(两种方式)
Aug 04 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
Oct 03 Javascript
vue使用drag与drop实现拖拽的示例代码
Sep 07 Javascript
vue.js与后台数据交互的实例讲解
Aug 08 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
Apr 25 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
Jun 19 jQuery
javascript实现移动端触屏拖拽功能
Jul 29 Javascript
vue router 动态路由清除方式
May 25 Vue.js
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为SHOPEX增加日志功能代码
2010/07/02 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
基于jquery的商品展示放大镜
2010/08/07 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
sails框架的学习指南
2014/12/22 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
Underscore源码分析
2015/12/30 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
深入理解移动前端开发之viewport
2018/10/19 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
Python中Qslider控件实操详解
2021/02/20 Python
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
宣传工作经验材料
2014/06/02 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python