键盘侦听器运行不止一次

gre*_*reW 5 react-native react-native-android

嘿,我正在尝试创建一个事件,该事件将在键盘出现时触发,但该功能触发了不止一次,我不知道为什么..

import React, { Component } from 'react';
import { Keyboard, Alert, View, TextInput } from 'react-native';

export default class App extends Component {

  constructor(props: any) {
    super(props);
    this.kbDidShowListener = Keyboard.addListener('keyboardDidShow', () => Alert.alert('keyboard is up'));
  }

  componentWillUnmount() {
    this.kbDidShowListener.remove();
  }

  render() {
    return (
      <View style={{ marginTop: 30 }}>
        <TextInput />
      </View>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

这是示例的博览会(您将多次看到警报) https://snack.expo.io/H1DHaIdgM

ps我在Android上工作。

谢谢!

sfr*_*ini 0

渲染函数不会只运行一次。通常也会在计算状态和道具时刷新多次。这样就可以解释这个问题了。

如果您想确定的话,请尝试在渲染方法中添加一个控制台,以查看数字是否匹配。

其实我在想另外一件事。尝试将代码移至 componentWillMount 或 componentDidMount

componentDidMount(){
    this.kbDidShowListener = Keyboard.addListener('keyboardDidShow', () => Alert.alert('keyboard is up'));
}
Run Code Online (Sandbox Code Playgroud)