问题:
我在Stack-Navigator中有一个带有2个屏幕的应用程序,两个都有TextInputs。每个屏幕都在componentWillMount中添加键盘监听器,如下所示:
this.keyboardDidShowListener = Keyboard.addListener('keyboardWillShow', this.keyboardWillShow);
this.keyboardDidHideListener = Keyboard.addListener('keyboardWillHide', this.keyboardWillHide);
因此,如果我在堆栈中的一个屏幕上触发键盘,它将在另一个屏幕上触发,这意味着在两个屏幕上都访问了keyboardWillShow / keyboardWillHide(因为在用户拥有后,屏幕上不会调用componentWillUnmount)从它们导航到堆栈中的下一页。
问题:
1.在每个屏幕的Keyboard.removeAllListeners()
中添加新的侦听器之前,在性能导向方面保持这种方式或更好地添加componentWillMount
是不是一个好主意(如下所示)?我已经设法将Keyboard.dismiss()
添加到从堆栈中的第二个屏幕导航回来时要运行的代码块,以便我没有意外行为。
// componentWillMount of both screens in the stack
Keyboard.removeAllListeners();
this.keyboardDidShowListener = Keyboard.addListener('keyboardWillShow', this.keyboardWillShow);
this.keyboardDidHideListener = Keyboard.addListener('keyboardWillHide', this.keyboardWillHide);