键盘侦听器运行时间超过

时间:2017-11-26 13:57:27

标签: 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>
    );
  }
}

这是一个示例的博览会(你会看到一次以上的警报) https://snack.expo.io/H1DHaIdgM

p.s我正在使用Android。

谢谢!

1 个答案:

答案 0 :(得分:0)

渲染功能不会只运行一次。通常也会刷新多次,同时计算状态和道具。这可以解释这个问题。

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

实际上,我在思考另一件事。尝试将代码移动到componentWillMount或componentDidMount

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