Я создал собственную встроенную анимацию для отображения заполнителя / загрузчика при загрузке списка статей:
Animated.loop(
Animated.sequence([
Animated.timing(this._animation_state.opacity, {
toValue: this._animation_state.target_opacity,
duration: this.props.animationDuration,
delay: this.props.animationDelay,
useNativeDriver: true
}),
Animated.timing(this._animation_state.opacity, {
toValue: this.props.minOpacity,
duration: this.props.animationDuration,
useNativeDriver: true
})
]),
{
iterations: 1
}
).start(() => this.startAnimation())
Этот компонент используется для отображения загрузки статей в другом компоненте, например:
render() {
return (
{this.state.articles.length === 0 ? (
<Loader articles={this.state.articles} />
) : (
<TableOfContents navigation={this.props.navigation} />
)}
);
}
Проблема заключается в том, что анимация блокирует проверку this.state.articles.length === 0
до ее завершения, тем самым, по существу, делая себя синхронной / блокирующей (и, следовательно, бесполезной).
Есть ли способ сделатьуверен, что эта анимация не блокирует поток от обновления и проверки состояния?useNativeDriver
похоже не имеет никакого эффекта.