键盘侦听器无法更改 this.state
Keyboard listener can't change this.state
我希望在打开键盘时执行动画并在关闭键盘时恢复。
问题是:
undefined is not an object (evaluating '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 调用它时,它就起作用了。
this
在提供给 Animated.timing
.
的函数中没有相同的上下文
您需要绑定方法:
this._keyboardDidShow = this._keyboardDidShow.bind(this)
如果这不起作用,您甚至可以在对 timing
的调用上方设置 let me = this
(并在 [=14= 的正文中将其称为 me
] 方法调用)。
我希望在打开键盘时执行动画并在关闭键盘时恢复。
问题是:
undefined is not an object (evaluating '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 调用它时,它就起作用了。
this
在提供给 Animated.timing
.
您需要绑定方法:
this._keyboardDidShow = this._keyboardDidShow.bind(this)
如果这不起作用,您甚至可以在对 timing
的调用上方设置 let me = this
(并在 [=14= 的正文中将其称为 me
] 方法调用)。