reason - 如何对 React.Ref.t(Js.Nullable.t('a)) 类型的值进行模式匹配
问题描述
我正在尝试将 DOM 元素作为 JS 对象访问。
let navRef = React.useRef(Js.Nullable.null);
let width =
switch (Js.Nullable.toOption(navRef)) {
| None => 0.0
| Some(nav) => ReactDOMRe.domElementToObj(nav)##clientWidth
};
但是我在里面的 navRef 上有一个类型错误Js.Nullable.toOption
错误:此表达式的类型为 React.Ref.t(Js.Nullable.t('a)) 但表达式应为 Js.Nullable.t('b) = Js.nullable('b) 类型
解决方案
React.Ref.t
是一种不透明的类型,因此您不能直接对其进行模式匹配。但是您可以使用以下方式访问 ref 的值,React.Ref.current
然后对其进行模式匹配:
let navRef = React.useRef(Js.Nullable.null);
let width =
switch (Js.Nullable.toOption(React.Ref.current(navRef))) {
| None => 0.0
| Some(nav) => ReactDOMRe.domElementToObj(nav)##clientWidth
};
推荐阅读
- angular - 无法读取未定义 CRUD 操作的“_id”类型的属性
- amazon-web-services - 如何将我的 AWS S3 存储桶设为私有并授予对象读取权限?
- intellij-idea - 为什么 IntelliJ IDE 不断从我的类内部变量中删除 $this->
- javascript - 当我尝试将 return 与三元运算符一起使用但不与 if 语句一起使用时,出现 UnexpectedToken 错误?
- java - 从数组中删除最后一个元素并返回它
- docker - 来自 docker 外部的 nginx 中的虚拟主机
- php - 基于数据库值的检查表框
- c++ - 范围适配器对于可视范围后面的参数是否懒惰?
- jenkins - Ansible Inventory: LC_ALL: 无法更改语言环境 (en_US.UTF-8)\r\n/bin/sh
- linux - 无法将 bash 脚本作为服务启动 | 灭霸——普罗米修斯