嘿我试图创建一个在键盘出现时会触发的事件,但是该功能的触发时间超过一次,我不知道为什么......
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。
谢谢!
答案 0 :(得分:0)
渲染功能不会只运行一次。通常也会刷新多次,同时计算状态和道具。这可以解释这个问题。
如果您想确定,请尝试在render方法中添加控制台,以查看数字是否匹配。
实际上,我在思考另一件事。尝试将代码移动到componentWillMount或componentDidMount
componentDidMount(){
this.kbDidShowListener = Keyboard.addListener('keyboardDidShow', () => Alert.alert('keyboard is up'));
}