我希望在打开键盘时执行动画,并在关闭时恢复。
问题是:
undefined不是对象(评估' this.state.scaleValue')
我有一个很好用的Keyboard.listener。
州:
this.state = {
scaleValue: new Animated.Value(0),
}
动画视图
<Animated.View style={styles.logoContainer,
{
transform: [
{scale: logoScale}
]
}
}>
<Image source={require('./someimage.png')} style={{width: 64, height: 64}} />
</Animated.View>
插值
const logoScale = this.state.scaleValue.interpolate({
inputRange: [0, 0.5, 1],
outputRange: [1, 0.5, 0]
});
触发
_keyboardDidShow () {
this.state.scaleValue.setValue(0);
Animated.timing(
this.state.ScaleValue,
{
toValue: 1,
duration: 300,
easing: Easing.easeOutBack
}
).start();
}
因此,当我将触发器中的代码放入函数并使用Touchable调用onPress时,它可以工作。
答案 0 :(得分:2)
this
在提供给Animated.timing
的函数中没有相同的上下文。
您需要绑定方法:
this._keyboardDidShow = this._keyboardDidShow.bind(this)
如果这不起作用,您甚至可以将let me = this
设置为timing
的呼叫之上(并在me
的正文中将其称为timing
方法调用)。