点击返回按钮报错:TypeError: 无法读取undefined的'remove'属性(react-native-modal相关)
React Native Modal点击返回按钮报错:TypeError: Cannot read property 'remove' of undefined
错误场景
点击返回按钮时触发以下错误:
TypeError: Cannot read property 'remove' of undefined
错误出自react-native-modal包,对应文件路径:C:\Uuuuuu\node_modules\react-native-modal\dist\modal.js
问题代码片段
componentWillUnmount() { BackHandler.removeEventListener('hardwareBackPress', this.onBackButtonPress); DeviceEventEmitter.removeListener.remove('didUpdateDimensions', this.handleDimensionsUpdate); if (this.interactionHandle) { InteractionManager.clearInteractionHandle(this.interactionHandle); this.interactionHandle = null; } }
修复方案
问题出在DeviceEventEmitter.removeListener.remove这一行的语法错误:removeListener是DeviceEventEmitter的直接方法,不需要额外链式调用.remove。
把错误行修改为:
DeviceEventEmitter.removeListener('didUpdateDimensions', this.handleDimensionsUpdate);
如果你的代码中是通过addListener返回了订阅实例(比如初始化时执行了this.dimensionsListener = DeviceEventEmitter.addListener('didUpdateDimensions', this.handleDimensionsUpdate)),则应该通过订阅实例调用remove:
if (this.dimensionsListener) { this.dimensionsListener.remove(); }
根据当前给出的代码片段,第一种修改方式即可解决该报错。
内容的提问来源于stack exchange,提问作者RAHUL RAJ
相关产品推荐
相关产品推荐

