【发布时间】:2021-04-03 17:35:37
【问题描述】:
我知道那里有很多文章和相关问题,但我来找你寻求帮助,我很难输入一个自定义钩子,它将一个事件侦听器添加到附加的窗口。但是我收到了这个错误。
Property 'current' does not exist on type 'never'.
我尝试了很多东西,但似乎没有任何效果,而且我的库无法编译。我想这与打开 strict 标志有关。
函数如下。
import { useEffect, useRef } from "react";
export function usePatientContextListener(handler: Function, element = window) {
const savedHandler = useRef<Function>(null);
useEffect(() => {
savedHandler.current = handler;
}, [handler]);
useEffect(() => {
savedHandler.current = handler;
const isSupported = element && element.addEventListener;
if (!isSupported || savedHandler) return;
const listener = (event: Event) => {
// eslint-disable-next-line no-extra-boolean-cast
if (!!savedHandler?.current) {
savedHandler.current(event)
}
};
window.addEventListener("message", listener, false);
return () => {
window.removeEventListener("message", listener);
};
}, [element]);
}
此外,当我将 null 作为默认值传递时,我收到另一个错误,指出 current 是只读属性。如果我删除 null,错误就会消失。
Cannot assign to 'current' because it is a read-only property.
我已经尝试了所有方法,但错误仍然不会消失。如果您有过这种经历或能以任何方式帮助我,我将不胜感激。最后附上错误图片
【问题讨论】:
标签: reactjs typescript react-hooks strict