详解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 相关文章推荐
javascript学习随笔(使用window和frame)的技巧
Mar 08 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
Jun 09 Javascript
setTimeout和setInterval的深入理解
Nov 08 Javascript
JS数组的常见用法实例
Feb 10 Javascript
jquery radio的取值_radio的选中_radio的重置方法
Sep 20 Javascript
基于JQuery的购物车添加删除以及结算功能示例
Mar 08 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
Jun 12 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
Aug 09 Javascript
Vue2 配置 Axios api 接口调用文件的方法
Nov 13 Javascript
微信小程序使用component自定义toast弹窗效果
Nov 27 Javascript
React中Ref 的使用方法详解
Apr 28 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
Aug 10 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
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
vue-router实现组件间的跳转(参数传递)
2017/11/07 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
大学生演讲稿范文
2014/01/11 职场文书
青年教师典范事迹材料
2014/01/31 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
个人授权委托书范本
2014/09/14 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
python入门之算法学习
2021/04/22 Python