使用Vue3重构自己项目时遇到报错
Property "xxx" was accessed during render but is not defined on instance
,碰到这个报错已经不是一次两次了,写篇文章记录一下。
Property "xxx" was accessed during render but is not defined on instance.
意思是 ➡ 属性“xxx”在渲染期间被访问,但未在实例上定义。
说大白话就是,在你所写的组件文件中,你的“xxx”属性在html文中有被Vue文档编译器解析发现,而在setup
进行实例创建时没有发现这个属性,Vue官方报错告诉你可能是没有定义的原因。
贴个我自己这边的报错
这两个报错都是Property “xxx“ was accessed during render but is not defined on instance.
,但报错出现的地方不一致,可以看到报错最右侧,如果是一个组件,那就可以直接定位问题出现在那个组件中,如果出现的是一个js包(是Vue 3的核心运行时包之一),则可以看报错下面 at <...>
,所显示组件就是问题出现的位置。也可以看看你自己的报错,定位一下问题出现的位置。
在重构项目是也是遇到两个场景出现上述报错。
defineProps
传递进来组件的数据和组件本地数据。// 请确保模板中使用的属性在setup选项中有定义
<script setup>
import { ref } from 'vue'
const status = ref(false)
</script><template><div v-if="status"></div>
<template/>// 组件传入参数
<script setup>
defineProps({status: {type: Boolean}
})
</script><template><div v-if="status"></div>
<template/>
// 在Vue2.x中,elementUi的表单Form中的ref和v-model同名时不会出现问题<el-form ref="myForm" v-model="myForm"></el-form>
获取
this.$
// 在Vue3.x的setup语法糖下,elementPlus的表单Form中的ref和v-model同名时就会出现同名覆盖的问题,ref的优先级更高//定义
const myForm = reactive({name: '小明',age: 18
})
<el-form ref="myForm" v-model="myForm"></el-form>console.log(myForm)
// 打印出来的是el-form的组件DOM实例,模板找不到v-model的值,就会报`Property "myForm" was accessed during render but is not defined on instance.`
setup
语法糖写法下,在使用elementPlus的表单Form时要注意,ref
和v-model
不要同名,问题就得到解决了。本文发布于:2024-02-05 08:20:54,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170728051164872.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |