Я пытался исправить проблему в течение последних 2 дней, она отлично работает на iOS.
constructor(){
super();
this.animation = new Animated.Value(0)
this.state = {
expanded: false,
};
}
toggle(){
let initialValue = this.state.expanded? 1 : 0 ,
finalValue = this.state.expanded? 0 : 1
this.setState({
expanded: !this.state.expanded,
});
this.animation.setValue(initialValue)
Animated.timing(
this.animation,
{
toValue: finalValue,
}
).start();
}
render(){
return(
<Animated.View style={{{flex: 1, marginTop: 28, paddingLeft: 25, transform: [{ scale: this.animation }, {perspective: 1000 }]}}}>
....
</Animated.View>
);
}
Этот компонент является дочерним, используется в родительском, как это: <FeedBack ref={ref => this.feedback = ref}/>
без каких-либо условий, чтобы проверить, показывать или нет (поскольку масштаб анимации установлен на ноль в конструкторе, поэтому нет необходимости)
метод toggle()
вызывается из родителя при нажатии кнопки.
Теперь this works fine on iOS
, когда компонент загружается, представления нет до тех пор, пока не будет нажата кнопка (затем масштабируется). а на android
когда компонент загружается, вид уже есть. Когда я нажимаю кнопку, анимированный вид исчезает и снова появляется (с масштабированием анимации), а последующие переключатели работают нормально. Проблема в Android заключается в том, что хотя initialValue
шкалы равно нулю, представление все еще существует при первой загрузке.