实现思路
- 在Vue组件的
props
选项中定义接收复杂对象的属性。
- 使用
computed
计算属性根据复杂对象内部不同属性值生成不同的渲染数据。
- 利用Vue的响应式原理,当外部传入的复杂对象发生变化时,计算属性会自动重新计算,从而触发组件重新渲染。
关键代码示例
<template>
<div>
<div v-if="isAdult">
<p>Name: {{ personInfo.name }}, 是成年人</p>
</div>
<div v-else>
<p>Name: {{ personInfo.name }}, 是未成年人</p>
</div>
</div>
</template>
<script>
export default {
props: {
complexObj: {
type: Object,
default: () => ({})
}
},
computed: {
personInfo() {
return this.complexObj.info;
},
isAdult() {
return this.personInfo.age >= 18;
}
}
}
</script>