vue3 v-for遍历defineProps或者props接收的数据时,报“xx” is of type ‘unknown‘

这篇具有很好参考价值的文章主要介绍了vue3 v-for遍历defineProps或者props接收的数据时,报“xx” is of type ‘unknown‘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

vue中使用ts,且在使用props或者defineProps进行父传子时,v-for遍历收到的数组,进行取值时,报“xx” is of type 'unknown'


问题描述

vue3 v-for遍历defineProps或者props接收的数据时,报“xx” is of type ‘unknown‘,前端,vue,typescript


原因分析:

提示:ts进行类型推导造成的报错


解决方案一:使用接口进行类型声明

提示:使用接口进行

<script setup lang="ts">

interface ITable {
    date: String,
    name: String,
    address: String,
    phone?: Number,
}
interface IColumns {
    prop: String,
    label: String,
    type?: String,
    width?: String | Number,
}
defineProps<{ columnData: IColumns[], tableData: ITable[] }>()

</script>

解决方案二:用vue3的type PropType

提示:创建一个ts文件,放类型数据,在使用的页面进行引用           

import { defineProps, type PropType } from 'vue'
import type { TypeColumn } from './index'   // PS:这里引入要写前面type
 
const props = defineProps({
    tableData: {
        type: Array,
        default: () => [],
        require: true
    },
    columnData: {
    type: Array as unknown as PropType<[TypeColumn]>,  // 需要先定义unknown 
    default: () => []
  }
})

 解决方案三:把接受的数据设为any类型

const props = defineProps({
    columnData:{
        type: Array<any>,
        default:() =>[],
        require: true
    }
})

总结:前两个都有一个弊端,不利于组件的封装;

第三个方便进行组件封装使用,但丢失了具体的类型推导文章来源地址https://www.toymoban.com/news/detail-572067.html

到了这里,关于vue3 v-for遍历defineProps或者props接收的数据时,报“xx” is of type ‘unknown‘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3父组件异步props传值,子组件接收不到值问题

    当我们使用vue3进行开发在创建组件的时候,子组件经常需要调用父组件的数据,那么这是就需要vue3的props进行对父组件与子组件通信来达到传值的效果 在使用props进行父子组件通信时,子组件无法成功渲染数据,导致拿到数据为空问题 提示:这里填写问题的分析: 在使用

    2024年02月11日
    浏览(28)
  • Vue3 v-for点击切换样式

    在div上绑定   :class= { 名称(class/id):a === key 值 }   并 添加 一个 点击事件 声明 const  a  = ref(0) ;  css写我们要的样式(就是我们绑定的class名称) 点击事件里写    i.value = key 值

    2024年02月13日
    浏览(35)
  • vue3【列表渲染】v-for 详细介绍(vue中的“循环”)

    在本文之前已经有文章简单概要介绍过vue中的渲染,点击帮你快速复习👏👏,包括 条件渲染 和 列表渲染 。 二者同样重要,但是 对于项目而言,使用更多的是列表渲染,主要表现为“循环”。 下面让我们继续深入地了解列表渲染的相关内容吧~👏👏👏 我们可以使用 v-f

    2024年02月22日
    浏览(32)
  • watch监听,解决Vue3父组件异步props传值,子组件接收不到的问题

    写静态数据的时候父组件传值子组件接收并渲染是没问题的,但当父组件异步获取数据,子组件接收数据会晚于渲染,就会产生接收不到的问题,我在用echarts绘制图表时图表就直接不显示  用watch监听props数据并在watch内进行赋值操作可解决该问题 直接上代码 父组件,vue3语法

    2024年02月15日
    浏览(35)
  • V-for遍历

    遍历数组  v-for最常用的可能就是用来遍历数组,接受两个参数(item, index),item为遍历出的每组数据,index为每组数据的索引,可做唯一标识 。 效果图:   遍历对象    v-for遍历对象可接受三个参数(value, key, index),value为每个对象的value值,key为key值,index为索引 效果图

    2024年02月11日
    浏览(18)
  • 已解决:Vue改变数据后界面不自动渲染,Vue中使用v-for遍历对象数组,当给其中某个元素对象重新赋值之后,页面组件列表没有渲染更新。

    问题如标题所说,Vue中使用v-for遍历对象数组,当给数组其中某个元素对象重新赋值之后,页面组件列表没有及时更新渲染,而是在页面进行了其他的渲染操作以后列表才更新出来新的数据,那同样给对象内的属性值赋值也可能存在不渲染的情况,一并解决,尤其发生在网络

    2024年02月06日
    浏览(41)
  • v-for 遍历数组数字

    1.v-for遍历数组 v-for 相当于js for循环,直接写在标签内使用,循环生成标签。例如: div v-for=\\\"(item,index) in arr\\\"{{item}}div arr 是一个数组 item 代表数组中每一项, index代表数组的索引 可以在标签内使用数组的元素,如果数组中的每一项还有数组,则可以嵌套多层for循环 2.v-for遍历数

    2023年04月08日
    浏览(28)
  • 面试官:来说说vue3是怎么处理内置的v-for、v-model等指令?

    最近有粉丝找到我,说被面试官给问懵了。 粉丝:面试官上来就问“ 一个vue文件是如何渲染成浏览器上面的真实DOM? ”,当时还挺窃喜这题真简单。就简单说了一下先是编译成render函数、然后根据render函数生成虚拟DOM,最后就是根据虚拟DOM生成真实DOM。按照正常套路面试官

    2024年04月22日
    浏览(32)
  • vue3报错:runtime-core.esm-bundler.js:38 [Vue warn]: Invalid prop: type check failed for prop “modelVal

    🔥🔥🔥 欢迎关注csdn前端领域博主: 前端小王hs 🔥🔥🔥 email: 337674757@qq.com 🔥🔥🔥 前端交流群: 598778642 vue3报错:runtime-core.esm-bundler.js:38 [Vue warn]: Invalid prop: type check failed for prop “modelValue”. Expected Boolean, got Object at 警告的大意是绑定的函数期待得到的是布尔值,但得到

    2023年04月08日
    浏览(38)
  • 使用v-for循环遍历element-ui的表格

    由于页面设计的功能要求,所以,页面的表格头以及表格的数据都是由后端返回来的,所以我们通过axios获取接口的数据后,通过v-for循环遍历表格的全部数据 HTML的代码如下: js的代码如下,我是使用的vue 通过axios获取接口数据的这里就不写了 直接放页面的效果 tableTitleLis

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包