我有一个像这样的简单组件:
var component = React.createClass({
render: function(){
if (this.props.isCollapsed){
return this.renderCollapsed();
}
return this.renderActive()
},
renderActive: function(){
return (
<div>
...
</div>
);
},
renderCollapsed: function(){
return (
<div>
...
</div>
);
},
});
基本上,当属性更改时,组件将显示活动状态或折叠状态。
我在想的是,当属性发生变化时,即 active->collapse,或者相反,我希望旧视图平滑地“收缩”或“扩展”以显示新视图。比如是active -> collapse,我想让active UI缩小到collapse UI的大小,平滑显示。
我不确定如何实现这种效果。请分享一些想法。谢谢!
原文由 Allan Jiang 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个最小的工作示例:
视图可以通过 CSS transition 平滑地“收缩”或“扩展”,这是通过更改 CSS 属性触发的。
要使用 React 控制 CSS 属性,我们可以将状态更改反映到属性值或
className
中render()
。在此示例中,
.active
类影响height
值,并由state.active
控制。该类由 React 切换以响应状态变化,并触发 CSS 转换。如需更平滑的过渡,请参阅 本文。