开发者问题收集

如果 prop 是响应式的,则无法获取子组件 prop 中的对象值

2023-08-10
134

我有一个父组件,并尝试将反应对象作为 props 传递:

<template>
    <Child :info="reactiveObject" />
</template>
<script setup>

const reactiveObject = reactive({ name: "Object", id: "443"})

Child.vue

<template>
    <div> {{ info.name }} 
</template>
<script setup>
const props = defineProps({
    info: Object,})

然后我收到 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'name')

如果我将完整的 props 对象信息传递到双括号中,我会在 html 中得到类似这样的值 image

为什么我无法通过 info.name 获取名称?

2个回答

使用 Reactive 时,你应该从 Vue 导入 Reactive。这是 Vue3 的功能。当你需要在 Vue 中使用某些东西时,你必须先导入它。

import { reactive } from 'vue'
const reactiveObject = reactive({ name: "Object", id: "443"})

当你忘记从 Vue 导入时,你不能在模板中使用它。这是不正确的语法。

你应该阅读更多 Vue 文档, 这是链接

jesse white
2023-08-10

不要使用 {{ info.name }},而要使用 {{ props.info.name }},因为还缺少结束标签

Domroe
2023-08-10