详解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 相关文章推荐
使Ext的Template可以解析二层的json数据的方法
Dec 22 Javascript
跟着JQuery API学Jquery 之三 筛选
Apr 09 Javascript
JavaScript中valueOf函数与toString方法深入理解
Dec 02 Javascript
JS Date函数整理方便使用
Oct 23 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
js选项卡的制作方法
Jan 23 Javascript
vue教程之toast弹框全局调用示例详解
Aug 24 Javascript
layui-table表复选框勾选的所有行数据获取的例子
Sep 13 Javascript
vue-resource:jsonp请求百度搜索的接口示例
Nov 09 Javascript
解决小程序无法触发SESSION问题
Feb 03 Javascript
js实现3D旋转效果
Aug 18 Javascript
如何利用JS将手机号中间四位变成*号
Sep 29 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
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
php语言流程控制中的主动与被动
2012/11/05 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
使用Python对Access读写操作
2017/03/30 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
python中温度单位转换的实例方法
2020/12/27 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
高三自我鉴定
2013/10/23 职场文书
大学生文员专业个人求职信范文
2014/01/05 职场文书
司机辞职报告范文
2014/01/20 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
教师读书笔记
2015/06/29 职场文书