哥们儿,听说你们被Vue项目那玩意儿搞得头疼!是不是一肚子的疑惑?莫怕,听我给你们分享个妙招——看完这篇文章,包你们轻松解决这个困扰!
好,咱们来聊聊这个”TypeError: Cannot read property ‘XXX’ of undefined”到底是啥意思?其实就是说,代码老想找点啥事儿干,结果啥也没找到,然后就彻底翻车了。比如说,你要是用Vue搭组件,就得常常用到data属性,可要是突然发现它还没定义,那这种情况就会发生!我给你举个实际的小例子让你好好体会一下吧:
“`
javascriptexport default {
data() {
return {
// 这里没有message属性
};
export default { data() { return { message: 'Hello, World!' } }, methods: { showMessage() { console.log(this.message.toUpperCase()); // TypeError: Cannot read property 'toUpperCase' of undefined } } }},
methods: {
showMessage() {
就在这儿,输出这个消息呗,哈?直接把它改成大写的咯。
}
}
export default { data() { return { message: 'Hello, World!' } }, methods: { showMessage() { if (this.message) { console.log(this.message.toUpperCase()); } } } }}
“`
本来想给这个消息属性(也就是this.message)来个大写处理,最后,啥变化也没有。这事儿闹得我当场就笑惨了,还蹦出来个“找不到toUpperCase”的错误提示。啊哟喂,真是白忙活一场
看看这个东西能用不?别给忘了,出问题就麻烦!然后咱们就试下它能不能用,要不就用if表达式,或者三元表达式也行。
2.用可选链操作符(?.)
vue 3.0居然加了”?.”这个神奇的符号!这下咱们就不怕搞混属性和方法~只要前面有个没见过的东西(比如undefined或者null),后面的操作就根本不生效。
比如:
message: ‘Hello World’
export default { data() { return { message: 'Hello, World!' } }, methods: { showMessage() { console.log(this.message?.toUpperCase()); // 如果this.message未定义,则不会执行toUpperCase()方法 } } }这个招儿挺管用的,看看你就懂了。就是传入console.log(this.message).toUpperCase()搞定!
这代码看得晕乎晕乎的?别慌’.?, ‘是在扒拉’requests.’里有没有’this’和’message’这对亲密伴侣呐。找到它们后,就不怕被那个讨人厌的’rerror Type Error’给冒犯了,接着你的程序可以毫无困扰地跑起来咯!
3.用默认值
别忘了看看那些没设置默认值的未知属性或者方法,不然可能会有漏洞被误判成正常状态!
message: null
真的很方便买!轻轻一按,搞定!什么信息也不用填写~找我们超级简单喽,随时待命!
export default { data() { return { message: 'Hello, World!' } }, methods: { showMessage() { console.log((this.message || '').toUpperCase()); // 如果this.message未定义,则返回空字符串 } } }在这儿,咱就是用 this.message搞定这码事儿,再用那个看着像树枝的||符号进行判断。要是没啥?那就填充个空白字符串给它,就安心啦~
碰上那个啥都看不见的TypeError: ‘XXX’,不用慌!下面教你3个小技巧解决它。写Vue代码时要特别留意,确保对象已经被定义好,这样就不会出错。
看看这个!这是Vue中经常遇到的 TypeError问题及其解决方法!不懂就问哈~
原文链接:https://www.icz.com/technicalinformation/web/2024/03/11988.html,转载请注明出处~~~
评论0