gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:15:36 25 4
gpt4 key购买 nike

我有一个我想使用的子组件 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>
);

最佳答案

您还需要做更多的事情:

  • CSSTransition应该有 Prop key .当它改变时,过渡将生效。
  • 您需要自己添加过渡样式,因为,React Transition Group is not an animation library like React-Motion, it does not animate styles by itself. 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com