我试图在 Angular 和 Vue 中构建一个选项卡组件。当我更改组件的道具时,Vue 尖叫(在控制台中引发错误)。Angular 似乎很好。
<tab [active]="true"></tab>
export class TabComponent implements OnInit {
@Input() name: string;
@Input() active = false;
ngOnInit() {
// Here I am mutatating an input property which is bad because,
// further changes to that input doesn't take effect
this.active = false;
console.log({name: this.name, active: this.active});
}
}
我个人认为修改组件的输入属性是不对的。我的问题是为什么 Angular 团队没有通过在控制台中抛出错误来强制执行这一点。
Vue 将显示此消息
vue.js:634 [Vue 警告]:避免直接改变 prop,因为只要父组件重新渲染,该值就会被覆盖。相反,使用基于道具值的数据或计算属性。正在变异的道具:“选择”