详解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 isPrototypeOf和hasOwnProperty使用区别
Mar 04 Javascript
js 数组的for循环到底应该怎么写?
May 31 Javascript
JS实现点击下载的小例子
Jul 10 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
Nov 11 Javascript
javascript 数组排序函数sort和reverse使用介绍
Nov 21 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
Nov 29 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
Mar 14 Javascript
javascript动态设置样式style实例分析
May 13 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
Mar 01 Javascript
微信小程序联网请求的轮播图
Jul 07 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
Apr 17 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
May 13 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
解析php中获取系统信息的方法
2013/06/25 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
nodeJS微信分享
2017/12/20 NodeJs
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
python opencv实现运动检测
2018/07/10 Python
python3.x实现base64加密和解密
2019/03/28 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
python 实现视频 图像帧提取
2019/12/10 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
超级实用的8个Python列表技巧
2020/08/24 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
应届护士推荐信
2013/11/16 职场文书
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
医院工作检讨书范文
2014/02/10 职场文书
大学生个人求职信例文
2014/07/07 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang