Sof*_*ory 9 react-native react-navigation
我刚刚从 RN 0.63.2 升级到 0.64.2,然后升级到 0.65.0-rc.3。现在,我在尝试在屏幕之间导航时开始遇到此异常:_reactNative.Keyboard.removeListener is not a function。
\n\n问题似乎出在 BottomTabBar.js 中。代码片段如下。
\n\nReact-navigation 版本是 4.4.0。React-navigation-tabs 版本是 1.2.0。
\n我检查了键盘类的方法,实际上,我可以看到一个名为“removeListener”的方法。甚至自动完成也显示了这一点。
\n\n另外,我可以在react-native文档中看到这个方法的存在:
\n\n所以,我不明白为什么我会得到这个例外。任何帮助深表感谢。
\n更新反应导航版本可能是一个解决方案,对此不确定,但我想如果可能的话避免这条路径,因为它到目前为止一直运行良好。
\n谢谢。
\n编辑:刚刚意识到第一次导航到屏幕时不会引发此异常。当我重新访问以前访问过的屏幕时会抛出该错误。
\nEdit2:我在 Android 上看到了这种行为。还无法在 iOS 上编译该项目。
\nEdit3:npm list react-native-tab-view命令显示react-native-tab-view的不同版本
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 react-native-tab-view@2.15.1\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac react-navigation-drawer@1.4.0\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 react-native-tab-view@1.4.1\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\xac react-navigation-tabs@1.2.0\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 react-native-tab-view@1.4.1\nRun Code Online (Sandbox Code Playgroud)\n我做到了npm install react-native-tab-view@1.4.1,但没有任何改变。我的意思是上面的 npm list 命令的输出发生了变化,并且全部显示了 React-native-tab-view 的版本 1.4.1,但行为没有改变。
小智 7
removeListener 方法已被弃用。建议对订阅事件调用remove,而不是调用removeListener。
按如下方式替换这些行并使用patch-package提交更改 -
componentDidMount() {
if (Platform.OS === 'ios') {
this.keyboardWillShow = Keyboard.addListener('keyboardWillShow', this._handleKeyboardShow);
this.keyboardWillHide = Keyboard.addListener('keyboardWillHide', this._handleKeyboardHide);
} else {
this.keyboardDidShow = Keyboard.addListener('keyboardDidShow', this._handleKeyboardShow);
this.keyboardDidHide = Keyboard.addListener('keyboardDidHide', this._handleKeyboardHide);
}
}
componentWillUnmount() {
if (Platform.OS === 'ios') {
this.keyboardWillShow?.remove();
this.keyboardWillHide?.remove();
} else {
this.keyboardDidShow?.remove();
this.keyboardDidHide?.remove();
}
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11630 次 |
| 最近记录: |