reactjs - 打字稿错误,我无法将函数分配给 RefObject.current 并且它说它不可调用
问题描述
任何人都知道为什么我不能将函数类型分配给 ref.current 类型?
useEffect(() => {
savedHandler.current = handler; // ERROR HERE:
}, [handler]);
TS2741:“(e:ChangeEvent)=> any”类型中缺少属性“current”,但在“RefObject”类型中是必需的。
稍后我尝试调用该函数并得到一个错误:
const eventListener = (event: Event) => savedHandler?.current?.(event);
这给了我错误:
TS2349:此表达式不可调用。类型“RefObject”没有调用签名。
如果我可以为 current 分配一个函数,那么我应该可以调用它,不是吗?但是,为什么抱怨我无法为“当前”分配功能。代码运行良好,只是那些 TS 错误让我发疯。
解决方案
估计是savedHandler
类型的问题。这对我有用:
function useInterval(callback: () => void) {
const savedCallback = useRef<typeof callback>();
useEffect(() => {
savedCallback.current = callback;
}, [callback]);
}
推荐阅读
- java - 第一次调用后如何在 ChildEventListener 中传递条件 onChildAdded?
- python - Networkx cmap:与网络节点颜色相关的问题
- vba - 使用 VBA 将自定义类保存到访问表
- pyspark-sql - 将行转换为pyspark中的列
- javascript - 使用引导程序 4 的 toast 组件显示动态创建的 toast 时,如何防止页面滚动?
- azure - 如何解决 Azure 函数本地调试错误:值不能为空。参数名称:提供者
- node.js - Heroku 和 Node.js 应用程序部署错误 H10(应用程序崩溃)
- azurekinect - 如何从 Azure Kinect 中提取颜色数据?
- java - 如何为所有占位符格式化具有相同值的字符串
- sql - BigQuery 中除以 0 错误,即使短路也应该防止它