详解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随机排序(随即出牌)
Sep 17 Javascript
jquery键盘事件使用介绍
Nov 01 Javascript
javascript中offset、client、scroll的属性总结
Aug 13 Javascript
详解JavaScript 中的 replace 方法
Jan 01 Javascript
基于js 字符串indexof与search方法的区别(详解)
Dec 04 Javascript
vue router 配置路由的方法
Jul 26 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
Jan 03 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 jQuery
详细讲解如何创建, 发布自己的 Vue UI 组件库
May 29 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
Jul 10 jQuery
基于layui内置模块(element常用元素的操作)
Sep 20 Javascript
vue实现select下拉显示隐藏功能
Sep 30 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
php中try catch捕获异常实例详解
2014/11/21 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
jQuery ui 1.7更新小结
2009/08/15 Javascript
javascript css styleFloat和cssFloat
2010/03/15 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
2017/07/06 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
vue resource post请求时遇到的坑
2017/10/19 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
python装饰器decorator介绍
2014/11/21 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
Linux中如何用命令创建目录
2016/12/02 面试题
建筑工程技术专业求职信
2014/07/16 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
旅游安全责任协议书
2016/03/22 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
POST提交数据常见的四种方式
2022/01/18 HTML / CSS