有没有办法在没有过渡的情况下使用 Material-UI 折叠和抽屉?

Is there a way to use Material-UI Collapse and Drawer without Transition?

我正在使用 material-ui v1 beta to create navigation on mobile website. The navigation has many nested lists 的折叠和抽屉。

当我单击 expand/collapse 折叠时,在折叠开始动画之前会有明显的延迟。同样的问题也发生在抽屉上。

Collapse 和 Drawer 都使用 Transition 来制作动画。过渡由 react-transition-group.

提供

为了提高响应速度,我打算使用没有过渡的折叠和抽屉(我不介意没有动画)。有没有办法在没有过渡的情况下使用折叠和抽屉?

P.S。我查看了 Collapse 和 Drawer 的文档,没有找到禁用 Transition 的道具或标志。

Drawer 公开了一个 transitionDuration 道具:

The duration for the transition, in milliseconds. You may specify a single timeout for all transitions, or individually with an object.

将此设置为零可消除过渡效果:

<Drawer transitionDuration={0} ...>

Collapse 提供了一个具有类似描述的 timeout 道具:

The duration for the transition, in milliseconds. You may specify a single timeout for all transitions, or individually with an object. Set to 'auto' to automatically calculate transition time based on height.

同样,将其设置为零可以消除这种影响。此 codesandbox 是对 material-ui 嵌套列表演示的修改。

请记住,Collapse 只是对使用 Grow 转换的元素的包装。如果您不希望出现动画,您可以根据状态有条件地渲染项目。请参阅此 other codesandbox 示例。

我有一个类似的问题渲染虚拟化列表 material-ui <Card /><Collapse /> 面板手风琴效果。

问题在于 <Collapse /> 过渡行为。即使将其 timeout 属性 设置为 0 希望没有延迟,它仍然会导致延迟,导致它甚至在 componentDidMount 生命周期之后完成渲染。 <Drawer /> transitionDuration prop.

也是如此

解决方案

只需删除 <Collapse /><Drawer /> 组件即可。只需使用一个状态来切换下划线子组件(比方说<List />)样式显示。

但是如果真的要动画效果包含,那就用react-virtuoso代替react-window