[Vue warn]: "Property or method index is not defined on the instance but referenced during render

在这里插入图片描述

8月份开始团队使用 React,所以 Vue 很久没接触了,今天同事问我一个问题,发出来记录下

问题重现

一个输入键盘,keyUpHandle 为该触发事件函数,绑定 $event 和 index,在输入的时候 index 一直报错,虽然不影响功能实现,但洁癖看到红色报错还是很不爽的,一起来看吧!
WX20190115-135901@2x
图中看到 “「Property or method index is not defined on the instance but referenced during render」” 报错,翻译过来就是 “属性或方法索引未在实例上定义,但引用了”,打开 Chrome dev,根据报错定位到该行代码

WX20190115-135927@2x

可以看到**「 vm.index 」**为 undefined

小插曲

插段关于 JavaScript 的两个特殊数据类型:undefined 和 null,第一次碰见 undefined 的时候,尝试用 Java

if(obj == undefined){
    // doSomething...
}

自作聪明了,查询后得知 JavaScript 写法是这样的:

if(typeof(obj) == “undefined”){
    // doSomething...
}

这是为什么捏,为什么是这种写法捏,JavaScript 为什么偏偏多出了这种写法?我们知道在大多数计算机语言内,有且仅有一个表示"无"的值, C 是 NULL,Java 是 null,Python 是None,Ruby 是 nil,为什么 JavaScript 表示“无”的值是 undefined 和 null?
JavaScript 诞生之初,Brendan Eich 根据 C 传统设计 null 自动转成 0,但这个在 Java 里是一个对象,由于 JavaScript 数据类型分为「原始类型」和「复合类型」,Eich 觉得 “无” 最好不是一个对象,而且 JavaScript 一开始并没错误处理机制,数据类型不匹配都是直接默认转换或者失败,这样不容易发现错误,从而设计了 undefined。

关于 undefined

undefined 表示未声明或已声明但未赋值的变量或不存在的对象,函数没有返回值时,默认返回 undefined,判断是不是 undefined 使用 typeof 函数,其返回的字符串包括如下:

“number”,“string”,“boolean”,“object”,“function”,“undefined”

回到正题,错误提示 index 以声明但未赋值,Vue 里是有关于这段描述的,也是最独特的的特性之一,「非侵入性的响应式系统」,就是深入响应式原理啦~~
「Vue 不允许动态添加根级响应式属性,所以你必须在初始化实例前声明根级响应式属性,哪怕只是一个空值」,ok,到这里,问题就解决了,既然说了可以声明空值,那就声明一个空值!

data() {
	return{
        index: ''
	}
}
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值