css - 使用react-transition-group作为子组件接收新的 Prop

标签 css reactjs animation react-transition-group

我有一个子组件,我想在其中使用slide-out动画,因为新的 Prop 正在传递给它,我尝试使用react-transition-group/switch-transition,但不是非常清楚如何使用它

子组件渲染方法如下所示

return (
  <SwitchTransition mode="out-in">
    <CSSTransition
      classNames="slide"
    >
      <div className={classnames("fields-group", containerClass)}>
        {/* <pre>{JSON.stringify(this.props.fields, null, 2)}</pre>*/}

        {fields}
      </div>
    </CSSTransition>
  </SwitchTransition>
);

最佳答案

您还需要做更多事情:

  1. CSSTransition 应该有一个 prop key。当它发生变化时,转换就会生效。
  2. 您需要自己添加过渡样式,因为 React Transition Group 不是像 React-Motion 这样的动画库,它本身不会为样式添加动画。 reference

所以子组件看起来像这样:

function Child({ propToAnimate }) {
  return (
    <>
      <h4>Child Component</h4>
      <div className="main">
        <SwitchTransition mode="out-in">
          <CSSTransition
            key={propToAnimate}
            addEndListener={(node, done) => {
              node.addEventListener("transitionend", done, false);
            }}
            classNames="fade"
          >
            <div className="button-container">
              <div className="animate">
                <pre>state: {propToAnimate}</pre>
              </div>
            </div>
          </CSSTransition>
        </SwitchTransition>
      </div>
    </>
  );
}

以及样式(例如幻灯片动画):

.fade-enter .animate {
  opacity: 0;
  transform: translateX(-100%);
}
.fade-enter-active .animate {
  opacity: 1;
  transform: translateX(0%);
}
.fade-exit .animate {
  opacity: 1;
  transform: translateX(0%);
}
.fade-exit-active .animate {
  opacity: 0;
  transform: translateX(100%);
}
.fade-enter-active .animate,
.fade-exit-active .animate {
  transition: opacity 500ms, transform 500ms;
}

https://codesandbox.io/s/switchtransition-child-component-dk4jo

关于css - 使用react-transition-group作为子组件接收新的 Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61077580/

相关文章:

html - 显示列表的唯一第一项

html - 如何将多个图像保持在一行中?

javascript - 导出默认类 Book extends Component VS export default Book

android - fragment 中的 overridePendingTransition

javascript - 在 AngularJS/ngAnimate 中显示/隐藏时向左/向右滑动动画

iPhone:如何在没有淡入淡出效果的情况下执行 kCATransitionMoveIn

html - 如何使用CSS在屏幕上动态调整图像

html - <br/> 高度调整与其他行对齐相同的高度

javascript - React - react 脚本 publicPath

javascript - 在 React 中覆盖 css 类