You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:27:06