【发布时间】:2017-04-08 10:08:51
【问题描述】:
我对如何更改组件内部的属性有点困惑,假设我有以下组件:
{
props: {
visible: {
type: Boolean,
default: true
}
},
methods: {
hide() {
this.visible = false;
}
}
}
虽然它有效,但它会给出以下警告:
避免直接修改 prop,因为每当父组件重新渲染时,该值都会被覆盖。相反,使用基于道具值的数据或计算属性。正在变异的道具:“可见” (在组件中找到)
现在我想知道最好的处理方法是什么,显然visible 属性是在 DOM 中创建组件时传入的:<Foo :visible="false"></Foo>
【问题讨论】:
-
你为什么要编辑道具?它应该(代码方面)从一个地方控制,或者从父组件的组件 og 中控制? (您可以通过将更新方法作为道具传递来进行组合,在您的情况下,
hide()可以在父级上,然后将引用作为道具发送。 -
@ArneHugo 正如你所看到的,组件本身有一个基本上“显示/隐藏”元素的方法。父级也可以更新此属性。把它想象成一个警告信息,如果它是可见的,父级可以控制它,组件本身可以删除自己。
-
是的,我明白了。我的建议是使用道具
visible(布尔值)和hide(函数)。然后在父级上定义hide,它也拥有visible的状态。这样你就不会编辑 props,而是编辑父状态,这是允许的。 -
也许你可以创建一个fiddle 来显示你到底在做什么,我可以改变它来告诉你我的意思。
-
@ArneHugo 我很快就会整理一个例子
标签: javascript vue.js vue-component