【发布时间】:2019-10-06 18:25:26
【问题描述】:
在我的 Blazor 组件中,我经常根据条件语句渲染组件,例如
@if (_contact.IsCustomer)
{
<SalesOrdersList Customer="@_contact" />
}
或来自循环,例如
@foreach(var salesOrder in _customer.SalesOrders)
{
<SalesOrderSummary SalesOrder="@salesOrder" />
}
当我更改状态时,我想为状态转换设置动画,以便组件淡入/淡出。在上面的示例中,当IsCustomer 更改,或者在SalesOrders 集合中添加或删除记录时,可能会发生这种情况。
动画添加组件
我可以看到在添加组件时如何实现这一点,通过具有 CSS 类的组件在组件呈现时发生淡入动画 - 例如如图Chris Sainty's excellent toast example
动画移除组件
我想不出你在移除一个组件时会怎么做,因为当 DOM 的那部分重新渲染时,该组件就会停止存在?
React 有 react-transition-group 处理过渡期,但我在 Blazor 中找不到类似的东西吗?
有没有办法在 Blazor 中为移除组件添加动画?
动画页面过渡
另一个经常动画的状态转换是改变“页面”。再说一次,我目前在 Blazor 中找不到这样做的方法吗?实际上,这可能只是一个用于删除旧页面组件的动画,而另一个用于添加新页面组件的动画,但在某些框架中是在路由级别而不是组件级别完成的 - 我目前在 Blazor 的任何一个级别都找不到任何东西?
【问题讨论】:
-
一种解决方法是让组件保持活动状态,但将 if 条件置于 CSS 可见性、宽度或高度以显示或隐藏它。
-
@Sorush 这是一个非常有用的想法 - 为什么不通过一个小例子将其添加为答案?也有可能在blazorfiddle.com 上运行它
-
我发布了一个新答案。