Реакторная пружина однокомпонентного монтажа / демонтажа показывает

Я пытаюсь создать анимацию, когда компонент монтирует / размонтирует с помощью React-spring:

    import { Transition, animated } from 'react-spring'
    ...

    export class CompName extends PureComponent<CompNamePropsType> {
      static defaultProps = {
        isExpanded: false,
      }

      render() {
        const {
          isExpanded,
          ...props
        } = this.props

    return (
      <section className={styles.block} {...props}>
        <Transition
          from={{ opacity: 0 }}
          enter={{ opacity: 1 }}
          leave={{ opacity: 0 }}>
        {isExpanded && (style => (
           <animated.div style={{ ...style, background: "orange" }}>
             <AnotherComp />
           </animated.div>
        ))}
       </Transition>
      </section>
    )
  }
}

Но это просто не работает, и я получил ошибку children is not a function, Что я сделал не так, и как я могу создать анимацию на компоненте mount/unmount с оберткой реагирующей пружиной?

1 ответ

Решение

Правильный путь:

<Transition items={isExpanded} native from enter leave>
  {isExpanded => isExpanded && (props => <animated.div style={props} />)
</Transition>

Элементы в, могут быть одним элементом, как в вашем случае, а затем работать против элемента, который выходит. Причина этого заключается в том, что переход сохранит его, даже когда реальное состояние изменится, он все еще может безопасно перевести элемент в "старое" состояние.

API- интерфейс объясняется здесь: http://react-spring.surge.sh/transition

Другие вопросы по тегам