键盘侦听器无法更改 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 ] 方法调用)。