详解vuex数据传输的两种方式及this.$store undefined的解决办法


Posted in Javascript onAugust 26, 2019

这个问题很乌龙,但也很值得记录一下, 原因是main.js中import store时将store的首字母写成了大写.

问题版本的如下所示:

import Store from './store'

我大概看了一下, vue似乎不支持在import部分包含带首字母大写的变量,所有import进来的对象必须要小写,我试过把router改成Router, 发现路由部分也会受影响.

这种方式是典型的将vuex值及其中的方法暴露给所有的组件使用, 即将vuex视作一个"全局变量", 但vuex也可以仅提供给部分组件,即谁想用,在谁的script中import这个vuex对象.

第一种方式 - 将vuex提供给所有组件(即在main.js中注册)

//main.js
import Vue from 'vue'
import App from './App'
import store from './store'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.config.productionTip = false
Vue.use(ElementUI)

new Vue({
 router,
 store,
 render: h => h(App)
}).$mount('#app')
//store/index.js
import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

 const store = new Vuex.Store({
  state: {
    n:101
  }
})
export default store
//view部分,即真正的可视化的部分, 这个任何一个组件都可以
<template>
  <div>
    {{ n }}
  </div>
</template>
<script>
export default {
 computed: {
  n () {
    return this.$store.state.n
  }
 }
}
</script>

第二种方式, 仅部分组件可使用vuex

//main.js - 去掉了store的声明
import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.config.productionTip = false
Vue.use(ElementUI)

new Vue({
 router,
 render: h => h(App)
}).$mount('#app')
//store/index.js - 这个文件和上面的一样
//想要使用vuex数据的组件. 注意,此时$store是无效的,所以只能通过store.state.n来获取
<template>
  <div>
    {{ n }}
  </div>
</template>
<script>
import store from './store'
export default {
 computed: {
  n () {
    return store.state.n
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 入门教程 [翻译] 推荐
Aug 17 Javascript
基于node.js的快速开发透明代理
Dec 25 Javascript
基于jquery的滚动鼠标放大缩小图片效果
Oct 27 Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 Javascript
js下拉框二级关联菜单效果代码具体实现
Aug 03 Javascript
JS创建自定义表格具体实现
Feb 11 Javascript
基于jQuery实现复选框是否选中进行答题提示
Dec 10 Javascript
jquery div模态窗口的简单实例
May 28 Javascript
AngularJS基于MVC的复杂操作实例讲解
Dec 31 Javascript
vue加载自定义的js文件方法
Mar 13 Javascript
js+css3实现简单时钟特效
Sep 13 Javascript
Map与WeakMap类型在JavaScript中的使用详解
Nov 18 Javascript
JS阻止事件冒泡的方法详解
Aug 26 #Javascript
express框架中使用jwt实现验证的方法
Aug 25 #Javascript
JS异步处理的进化史深入讲解
Aug 25 #Javascript
Vue源码分析之Vue实例初始化详解
Aug 25 #Javascript
javascript导出csv文件(excel)的方法示例
Aug 25 #Javascript
JavaScript在web自动化测试中的作用示例详解
Aug 25 #Javascript
angularjs自定义过滤器demo示例
Aug 24 #Javascript
You might like
NT IIS下用ODBC连接数据库
2006/10/09 PHP
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
2017/04/18 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
vue devtools的安装与使用教程
2018/08/08 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
Javascript实现鼠标点击冒泡特效
2019/12/24 Javascript
js回调函数仿360开机
2019/12/26 Javascript
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
python实现学生通讯录管理系统
2021/02/25 Python
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
英语自荐信范文
2013/12/11 职场文书
有关打架的检讨书
2014/01/25 职场文书
毕业评语大全
2014/05/04 职场文书
治超工作实施方案
2014/05/04 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python