RN 0.66版本removeListener已弃用,如何正确移除Keyboard键盘监听器
React Native 升级后
Keyboard.removeListener弃用解决方案 核心原因
React Native 较新版本已正式弃用Keyboard类的*removeListener*静态方法,原有传入事件名、回调函数的监听移除逻辑不再生效。
修复后代码
useEffect(() => { const keyboardDidShowSub = Keyboard.addListener("keyboardDidShow", keyboardDidShow); const keyboardDidHideSub = Keyboard.addListener("keyboardDidHide", keyboardDidHide); return () => { keyboardDidShowSub.remove(); keyboardDidHideSub.remove(); }; }, []);
可选优化:批量清理监听
如果同时注册了多个监听事件,可以统一存放到数组中批量执行移除,减少重复代码:
useEffect(() => { const keyboardSubscriptions = [ Keyboard.addListener("keyboardDidShow", keyboardDidShow), Keyboard.addListener("keyboardDidHide", keyboardDidHide) ]; return () => { keyboardSubscriptions.forEach(sub => sub.remove()); }; }, []);
内容的提问来源于stack exchange,提问作者ArefinDe
相关产品推荐
相关产品推荐

