bounty将在3天后过期。回答此问题可获得+50的声望奖励。Takeshi Tokugawa YD正在寻找规范答案。
vue-slide-up-down库仅使用预安装的元素。
***向下滑动情况:**动画开始前不会挂载元素
***向上滑动情况:**动画结束后不会卸载元素
它只处理元素的height和hidden
属性。
现在,如果我没有什么目标元素被挂载时,它不显示?
***向下滑动情况:**在动画开始之前,我希望安装元素
***向上滑动情况:**动画完成后,我希望元素被卸载,而不仅仅是隐藏
如果我们尝试
<slide-up-down
v-if="active"
:active="active"
>
Only show this if "active” is true
</slide-up-down>
它将不是动画,因为:
***向下滑动情况:**动画在安装元素之前开始
***向上滑动情况:**元素将在动画开始前卸载
2条答案
按热度按时间afdcj2ne1#
您需要一个单独的变量来控制组件是否呈现(我在下面将其命名为
isRendered
)。计算setter + getter(以下命名为
rendered
),将active
和isRendered
设置为当前值,但顺序不同:true
时:首先打开isRendered
,然后在$nextTick
中将active
设置为true
,这样动画就会播放false
时:首先将active
设置为false
,等待动画完成,然后将isRendered
设置为false
。一个一个三个一个一个一个一个一个四个一个一个一个一个一个五个一个
如果您要多次执行此操作,您可能希望将其作为独立组件提取。
由于现在的更改来自
rendered
属性,因此可以将计算出的setter代码移动到watch
中:在Vue 2中:
沙盒。
<slide-up-down />
。vngu2lb82#
如果我没猜错,就有解决办法。
使用
v-show
代替v-if
我使用了
vue-slide-up-down
站点中的原始示例来演示这种行为。如果您使用"v-show"并同时切换
v-slide-
组件,那么当您隐藏的内容再次显示时,您将获得幻灯片效果。