Vue.js : 属性 或方法未在实例上定义但在渲染期间被引用
Vue.js : Property or method is not defined on the instance but referenced during render
我有
<template>
<div class="dashboard">
<Navbar />
<MainPanel :title="Dashboard" :icon="dasboard" />
</div>
</template>
<script>
import MainPanel from '../../components/MainPanel'
import Navbar from '../../components/Navbar'
export default {
name: 'Dashboard',
components: {
Navbar,
MainPanel
}
}
</script>
如您所见,我正在尝试重用我的 MainPanel 组件。
主面板
<template>
<v-container fluid class="my-5">
<v-row>
<v-flex col-xs-12>
<v-card elevation="2" class="pb-15">
<v-flex xs12 class="text-center">
<v-card-title>
<v-btn dark text color="black">
<v-icon right class="mr-2">{{ icon }}</v-icon>
<span>{{ title }}</span>
</v-btn>
</v-card-title>
</v-flex>
</v-card>
</v-flex>
</v-row>
</v-container>
</template>
<script>
export default {
name: 'MainPanel',
props: {
icon: String,
title: String
},
data() {
return {
icon: '',
title: ''
}
}
}
</script>
<style lang=""></style>
在控制台中,我一直收到此错误
[Vue warn]: Property or method "dasboard" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.
有人可以给我一些提示吗?
在 props 中使用原始值时使用绑定符号 :
意味着值应该作为脚本选项中的属性存在:
<MainPanel title="Dashboard" icon="dasboard" />
看来是个很简单的错误:
:title="Dashboard"
在 Vue 中使用列 (:
) 在组件上添加道具或属性,将使用 属性 定义或在道具或数据中。
如果你使用 title="dashboard"
你实际上会传递一个字符串,这就是你想要的
根据Vue2 official guide,props
可以简单地从属性中获取值或者通过v-bind
传递来实现响应。
所以在这种情况下,您可能希望使用 title
而不是 :title
。
<MainPanel title="Dashboard" icon="dasboard" />
如果你想让 MainPanel 标题可以响应地改变那么你可以在 data
中声明一个变量并通过 v-bind
:
<MainPanel :title="varaibleForTitle" :icon="varaibleForIcon" />
顺便说一句,您可以通过 v-bind
传递字符串值 - 尽管我不明白为什么会有人想要这样做。
<MainPanel :title="'MainPanel'" :icon="'dasboard'" />
干杯。
我有
<template>
<div class="dashboard">
<Navbar />
<MainPanel :title="Dashboard" :icon="dasboard" />
</div>
</template>
<script>
import MainPanel from '../../components/MainPanel'
import Navbar from '../../components/Navbar'
export default {
name: 'Dashboard',
components: {
Navbar,
MainPanel
}
}
</script>
如您所见,我正在尝试重用我的 MainPanel 组件。
主面板
<template>
<v-container fluid class="my-5">
<v-row>
<v-flex col-xs-12>
<v-card elevation="2" class="pb-15">
<v-flex xs12 class="text-center">
<v-card-title>
<v-btn dark text color="black">
<v-icon right class="mr-2">{{ icon }}</v-icon>
<span>{{ title }}</span>
</v-btn>
</v-card-title>
</v-flex>
</v-card>
</v-flex>
</v-row>
</v-container>
</template>
<script>
export default {
name: 'MainPanel',
props: {
icon: String,
title: String
},
data() {
return {
icon: '',
title: ''
}
}
}
</script>
<style lang=""></style>
在控制台中,我一直收到此错误
[Vue warn]: Property or method "dasboard" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.
有人可以给我一些提示吗?
在 props 中使用原始值时使用绑定符号 :
意味着值应该作为脚本选项中的属性存在:
<MainPanel title="Dashboard" icon="dasboard" />
看来是个很简单的错误:
:title="Dashboard"
在 Vue 中使用列 (:
) 在组件上添加道具或属性,将使用 属性 定义或在道具或数据中。
如果你使用 title="dashboard"
你实际上会传递一个字符串,这就是你想要的
根据Vue2 official guide,props
可以简单地从属性中获取值或者通过v-bind
传递来实现响应。
所以在这种情况下,您可能希望使用 title
而不是 :title
。
<MainPanel title="Dashboard" icon="dasboard" />
如果你想让 MainPanel 标题可以响应地改变那么你可以在 data
中声明一个变量并通过 v-bind
:
<MainPanel :title="varaibleForTitle" :icon="varaibleForIcon" />
顺便说一句,您可以通过 v-bind
传递字符串值 - 尽管我不明白为什么会有人想要这样做。
<MainPanel :title="'MainPanel'" :icon="'dasboard'" />
干杯。