反应打字稿“当前”不存在于“从不”类型中

金针

我正在使用反应和打字稿。我想获得 div 标签的高度,所以我使用了 useRef。但是,我在当前收到 ts 错误。

Property 'current' is not present in type 'never'. ts(2339)
    const ref = useRef<HTMLDivElement>(null);

    useEffect(() => {
      if (ref != null || ref.current != null) {
        setHeight(ref.current.clientHeight);
      }
    }, [user]);

瑞安乐

这意味着ref.current != null如果ref != null为真,您的条件将“永远不会”为真

我可以在您的逻辑中看到,您正在尝试ref.current在引用之前检查是否为空ref.current.clientHeight

所以正确的条件应该是:

useEffect(() => {
  if (ref !== null && ref.current !== null) {
    setHeight(ref.current.clientHeight);
  }
}, [user]);

||条件运行由左到右,如果你想用你的条件,那么为了改变保持:

useEffect(() => {
  if (ref.current !== null || ref !== null) {
    setHeight(ref.current.clientHeight);
  }
}, [user]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

打字稿:属性 'foo' 不存在于类型 'Foo | 酒吧'

打字稿错误 TS2339:属性不存在于类型 (Angular 12)

反应钩子和打字稿-类型'从不'属性'***'不存在

打字稿:“从不”类型上不存在“用户”属性

打字稿:“从不”类型上不存在“title”属性

Solr -- 强制 facet 显示当前不存在于任何文档中的枚举字段

属性 'onClick' 不存在于类型 '{children?: ReactNode; }'

属性'x'不存在于类型'true | 点'

'map' 不存在于类型'Observable<Response>' Nativescript

属性不存在于类型上

反应本机打字稿,类型textinput上不存在属性'textalign'

与打字稿反应:类型“历史记录”上不存在属性“推送”

带有反应弹簧的打字稿。属性“ interpolate”在类型“ number”上不存在

类型“ X []”上不存在属性“ customProperty”。打字稿反应。TS2339

Spring 方法存在于代码中,但不存在于 JAR 中

权限不存在于清单中,但存在于应用程序信息中

检查div是否不存在于javascript中

资产“ ”不存在于资产管道中

打字稿:类型'Global'不存在属性'DB'

忽略打字稿错误“类型的值不存在属性”

打字稿:类型“ HTMLElement”上不存在属性“ src”

打字稿-类型“ HTMLElement”上不存在属性“ scrollY”

打字稿认为getYear在日期类型上不存在

属性在类型上不存在。打字稿

打字稿“元素类型上不存在属性”

打字稿错误-类型上不存在属性“权限”

打字稿:“ typeof aceAjax”类型不存在属性require

打字稿-主题类型上不存在属性扫描...?

打字稿类型错误属性不存在