为了更好地支持服务器渲染,Material-UI 为一些动画组件的子组件提供了一个 style 属性,(Fade, Grow, Zoom, Slide)。 为了让动画如期实现,必须将 style 属性应用到 DOM 上。
// 'props' 对象包含一个 'style' 属性。
// 你需要将这个属性提供给 `div` 元素,如下所示。
function MyComponent(props) {
  return (
    <div {...props}>
      Fade
    </div>
  );
}
export default Main() {
  return (
    <Fade>
      <MyComponent />
    </Fade>
  );
}Collapse 折叠
从子元素的起始边缘开始展开。 如果你需要水平折叠,请使用 orientation 属性。 collapsedHeight 属性可以用于设置未扩展时的最小高度值。
<FormControlLabel
  control={<Switch checked={checked} onChange={handleChange} />}
  label="Show"
/>
<div className={classes.container}>
  <Fade in={checked}>
    <Paper elevation={4} className={classes.paper}>
      <svg className={classes.svg}>
        <polygon points="0,100 50,00, 100,100" className={classes.polygon} />
      </svg>
    </Paper>
  </Fade>
</div>Slide 滑动
从屏幕边缘滑入。 direction 属性控制从屏幕的哪一个边缘开始。
过渡组件的 mountOnEnter 属性使子组件无法被挂载,直到 in 为 true。 这可以保证相对上定位好的组件不会从屏幕外面的位置滚动到视图中。 同样的, 在组件从屏幕中过渡完后,unmountOnExit 属性将次组件从 DOM 中移除。
<div className={classes.wrapper}>
  <FormControlLabel
    control={<Switch checked={checked} onChange={handleChange} />}
    label="Show"
  />
  <Slide direction="up" in={checked} mountOnEnter unmountOnExit>
    <Paper elevation={4} className={classes.paper}>
      <svg className={classes.svg}>
        <polygon points="0,100 50,00, 100,100" className={classes.polygon} />
      </svg>
    </Paper>
  </Slide>
</div>TransitionGroup
To animate a component when it is mounted or unmounted, you can use the TransitionGroup component from react-transition-group. As components are added or removed, the in prop is toggled automatically by TransitionGroup. As components are added or removed, the in prop is toggled automatically by TransitionGroup.
- 🍏 Apple
- 🍌 Banana
- 🍍 Pineapple
{addFruitButton}
<Box sx={{ mt: 1 }}>
  <List>
    <TransitionGroup>
      {fruitsInBasket.map((item) => (
        <Collapse key={item}>
          {renderItem({ item, handleRemoveFruit })}
        </Collapse>
      ))}
    </TransitionGroup>
  </List>
</Box>TransitionComponent 属性
有些 Material-UI 组件在内部也在使用这些过渡动画。 它们接受一个 TransitionComponent 属性来定制默认的动画。 您可以使用上述的任何组件或者是您自己的组件。 它应遵守以下条件:
- 接受一个 in属性。 这对应于打开/关闭的状态。
- 当进入过渡时调用 onEnter回调属性。
- 当退出过渡完成后应该调用 onExited回调属性。 这两个回调属性保证了当在一个关闭的状态并展示完过渡动画时,才会移除子内容。
For more information on creating a custom transition, visit the react-transition-group Transition documentation. 你还可以访问一些组件的专用部分: 你还可以访问一些组件的专用部分: