详解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 相关文章推荐
仿微博字符限制效果实现代码
Apr 20 Javascript
探索Emberjs制作一个简单的Todo应用
Nov 07 Javascript
关于div自适应高度/左右高度自适应一致的js代码
Mar 22 Javascript
js+jquery实现图片裁剪功能
Jan 02 Javascript
js实现图片淡入淡出切换简易效果
Aug 22 Javascript
javascript实现简单的on事件绑定
Aug 23 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
Jun 13 jQuery
jQuery序列化后的表单值转换成Json
Jun 16 jQuery
angular写一个列表的选择全选交互组件的示例
Jan 22 Javascript
Vue快速实现通用表单验证功能
Dec 05 Javascript
Vue分页效果与购物车功能
Dec 13 Javascript
JavaScript中的全局属性与方法深入解析
Jun 14 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
域名查询代码公布
2006/10/09 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
python网络爬虫采集联想词示例
2014/02/11 Python
python实现文件名批量替换和内容替换
2014/03/20 Python
python执行使用shell命令方法分享
2017/11/08 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
你所在的项目是如何确定版本号的
2015/12/28 面试题
幼儿园教师考核制度
2014/02/01 职场文书
大型会议接待方案
2014/03/01 职场文书
洗车工岗位职责
2014/03/15 职场文书
安全生产责任书范本
2014/04/15 职场文书
小班评语大全
2014/05/04 职场文书
财务会计专业求职信
2014/06/09 职场文书
战马观后感
2015/06/08 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android