我需要一些关于组件之间通信的Vue (version 2)基本逻辑概念的帮助,我似乎无法掌握…
我有一个仪表板(dashboard .vue),从中我打开一个弹出:<FormXPopup v-show="isVisible">
FormXPopup内部。我有一个带有内容槽的弹出组件<Popup>
。
Popup有一个关闭按钮,它发出'close'来切换Dashboard.vue中的isVisible布尔值。
在弹出的内容槽我已经放置了一个表单组件:<FormX>
FormX具有表单验证。在Dashboard.vue.
中还有一个取消按钮,它也会发出'close'。现在我想在关闭弹出窗口时清除所有验证。
我可以很容易地清除它,然后发出'close'当我点击取消按钮从在FormX.vue。
然而,当我点击关闭按钮驻留在<Popup>
我不知道如何清除的形式。
另外,Popup正在被重用,所以我正在寻找一个灵活的解决方案。
那么,当我关闭弹出窗口(父窗口)时,如何清除窗体(子窗口)呢?
Vue.js中v-show
和v-if
是有区别的
v-show
当你使用v-show
时,Vue将渲染FormXPopup
并应用display: none;
直到isVisible === true
。
这在加载页面时花费更多,但切换变量在性能上是便宜的。这应该在变量变化很大时使用。
v
当你使用v-if
时,Vue将不会渲染组件,直到条件为真。一旦组件被渲染,如果条件返回false,则该组件将被销毁。因此,您不需要手动清除表单。
此解决方案在呈现初始页面时花费较少,但在变量更改时花费更多时间。
知道了这一点,你应该在这种情况下使用v-if
,因为isVisible
不会改变那么多,而且因为弹出窗口有一个需要每次重新初始化的状态。
v-show
只是样式调整逻辑。
v-show:false
是在这个标签的样式中添加display: none
。