Vue3报错Property “xxx“ was accessed during render but is not defined on instance.

本文主要是介绍Vue3报错Property “xxx“ was accessed during render but is not defined on instance.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用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 <...>,所显示组件就是问题出现的位置。也可以看看你自己的报错,定位一下问题出现的位置。

报错出现场景

在重构项目是也是遇到两个场景出现上述报错。

  1. 第一种是完全切合官方的提示,在模板中有使用到某个属性,而在setup选项中没有定义,包括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/>
  1. 第二种就是不切合官方提示的场景。由于自己项目重构,使用到的UI库是elementPlus,模板代码和逻辑层代码部分是从Vue2版本直接移植过来,使用Vue3写法修改的。在使用到elementPlus中的表单Form结合Vue3写法就出现了上述问题。
// 在Vue2.x中,elementUi的表单Form中的ref和v-model同名时不会出现问题<el-form ref="myForm" v-model="myForm"></el-form>
获取
this.$ref.myForm...
this.myForm...// 在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.`

解决方法

  1. 请确保好模板中引用到的属性,在setup语法糖中有定义或被组件传入。
  2. Vue3的setup语法糖写法下,在使用elementPlus的表单Form时要注意,refv-model不要同名,问题就得到解决了。

这篇关于Vue3报错Property “xxx“ was accessed during render but is not defined on instance.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/DM_Cxx/article/details/131107801
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/431970

相关文章

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

Vue中插槽slot的使用示例详解

《Vue中插槽slot的使用示例详解》:本文主要介绍Vue中插槽slot的使用示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、插槽是什么二、插槽分类2.1 匿名插槽2.2 具名插槽2.3 作用域插槽三、插槽的基本使用3.1 匿名插槽

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践举例

《Vue2项目中配置TailwindCSS和FontAwesome的最佳实践举例》:本文主要介绍Vue2项目中配置TailwindCSS和FontAwesome的最... 目录vue 2 项目中配置 Tailwind css 和 Font Awesome 的最佳实践一、Tailwind CSS 配置1. 安

Python报错ModuleNotFoundError的10种解决方案

《Python报错ModuleNotFoundError的10种解决方案》在Python开发中,ModuleNotFoundError是最常见的运行时错误之一,通常由模块路径配置错误、依赖缺失或命名冲... 目录一、常见错误场景与原因分析二、10种解决方案与代码示例1. 检查并安装缺失模块2. 动态添加模块