Как следует активизировать LayoutAnimation при изменении свойств компонента? - PullRequest
0 голосов
/ 15 апреля 2020

React Native LayoutAnimation позволяет автоматически анимировать виды на новые позиции при следующем макете.

У меня есть элементы, хранящиеся в Redux, которые передаются как свойства в компонент, который их отображает. Когда свойства меняются, я хочу, чтобы содержимое компонента соответствующим образом анимировалось. Однако я не уверен, где в компоненте вызывать LayoutAnimation.configureNext().

. Метод componentWillUpdate может показаться правильным в том виде, в котором он вызывается перед рендерингом, но метод устарел и будет удален . componentDidUpdate слишком поздно, так как рендеринг / компоновка уже произошла.

Я получил это, скопировав свойства в состояние компонента и вызвав LayoutAnimation.configureNext() в componentDidUpdate, что вызывает повторную команду -Рендеринг с использованием анимации. Это может иметь дополнительное преимущество, заключающееся в некоторой изоляции обновления этого компонента от предыдущего цикла рендеринга, который может иметь обновления других компонентов, но это кажется громоздким.

Где в жизненном цикле должны вызываться методы LayoutAnimation.configureNext()?

1 Ответ

0 голосов
/ 16 апреля 2020

Оказывается, вызов LayoutAnimation.configureNext() в componentDidUpdate или useEffect создает анимацию при изменении свойств. Хотя эти методы вызываются после render(), они, очевидно, вызываются до фактического макета и рендеринга на экране.

Мне не удалось найти какую-либо документацию по жизненному циклу обратного вызова / макета / рендеринга, которая бы разделяла эти фазы, но эмпирически это работает.

...