Vue 道具初始化/变异

Posted

技术标签:

【中文标题】Vue 道具初始化/变异【英文标题】:Vue prop initialization/mutating 【发布时间】:2019-05-03 16:36:51 【问题描述】:

我有以下代码:

export default class LayoutComponent extends Vue   
    @Prop() whiteBg: boolean;   
    ...

但是当我编译它时,我得到:

属性 'whiteBg' 没有初始化器,也没有在构造函数中明确赋值

所以我尝试通过以下方式修复它:

export default class LayoutComponent extends Vue   
    @Prop() whiteBg: boolean = true;    
    ...

但是在 chrome 控制台中我得到错误:

避免直接修改 prop,因为每当父组件重新渲染时,该值都会被覆盖

并在使用它的父组件中设置“忽略”whiteBg 值。

问题:怎么办?

【问题讨论】:

【参考方案1】:

使用以下代码

export default class LayoutComponent extends Vue   
    @Prop() whiteBg!: boolean;      
    ...

【讨论】:

【参考方案2】:

或者使用下面的

export default class LayoutComponent extends Vue 
    @Prop( default: true ) whiteBg: boolean;
    ...

https://github.com/kaorun343/vue-property-decorator

【讨论】:

以上是关于Vue 道具初始化/变异的主要内容,如果未能解决你的问题,请参考以下文章

Vue 2 - 变异道具vue-warn

Vue.js。子组件中的变异道具不会触发警告。想知道为啥

道具被变异(在 django 模板和带有 CDN 的 Vue.js 中)

从 Vue 组件中的对象道具初始化数据

如何在单个文件 vue 组件中的初始化时将道具传递给 vue 组件(vue-loader 中的依赖注入)?

Vue警告避免改变道具“taskToEdit”