Никогда не пытайтесь напрямую изменять компонент FlatList, поскольку он является компонентом собственного представления. Вы должны всегда мутировать источник данных и изменять его состояние. Имейте в виду, что если вы делаете это слишком часто, вы рискуете столкнуться с проблемами производительности, потому что вы будете вызывать повторный рендеринг при каждом изменении.
Все, что вам нужно сделать, это анимировать элемент списка, например:
class ListItem extends PureComponent {
constructor() {
super()
this.state = {
animateItem: new Animated.Value(0)
}
}
componentDidMount() {
Animated.timing(this.state.animateItem, {
toValue: 1,
duration: 300,
delay: 300
}).start()
}
render() {
return (
<Animated.View
style={{
opacity: this.state.animateItem,
transform: [{
translateY: this.state.animateItem.interpolate({
inputRange: [0, 1],
outputRange: [500, 1]
})
}]
}}>
{/* child views here */}
</Animated.View>
)
}
}
Это оживит ваши предметы снизу вверх. Вы можете установить свойство delay
в методе Animated.timing
для задержки анимации. FlatList отображает элементы по одному, и они также будут анимированы таким же образом.