reactjs - 使用 react-cool-inview ('RefObject' 不可分配给类型 'RefObject')
问题描述
我已经react-cool-inview
使用yarn add react-cool-inview
.
然后我导入它并在一个组件上使用它(MyComponent.tsx)
:
import React from "react";
import useInView from "react-cool-inview";
const MyComponent = (): JSX.Element => {
interface onEnterArgs {
unobserve: () => void;
}
const { ref } = useInView({
onEnter: ({ unobserve }: onEnterArgs) => {
unobserve();
console.log("Got it");
},
});
return (
<div ref={ref}> // lint error on this line
Hi there
</div>
);
};
export default MyComponent;
运行我的 TypeScript 应用程序时,我收到以下类型构建错误:
Type 'RefObject<HTMLElement>' is not assignable to type 'string | ((instance: HTMLDivElement | null) => void) | RefObject<HTMLDivElement> | null | undefined'.
Type 'RefObject<HTMLElement>' is not assignable to type 'RefObject<HTMLDivElement>'.
Property 'align' is missing in type 'HTMLElement' but required in type 'HTMLDivElement'. TS2322
这可能是什么原因造成的?
解决方案
useInView
正在返回一个一般的参考HTMLElement
,但div
想要一个专门用于 div aka 的参考HTMLDivElement
。
幸运的是,该useInView
函数接受一个通用变量,您可以使用它来设置元素的类型。
const { ref } = useInView<HTMLDivElement>({ ...
这将为ref
a返回正确的类型div
。
推荐阅读
- django - 如何将一个模型的字段链接到另一个模型的特定字段
- ios - CollectionViewController 未调整使用 InputAccessoryView 显示的键盘
- php - PHP shell_exec 在 deb 9 上访问系统服务
- java - Gmail 收件箱和 Java
- google-sheets - Google 表格 - 如果单元格 X 中的值介于 A 列中的最小值和 B 列中的最大值之间,则在 C 列中返回相关值
- c# - 如何遍历目录以覆盖文件?
- python - PyTorch 中 nn.Linear 的类定义是什么?
- markdown - 你如何将 iframe 嵌入到 Markdown 中
- css - 让我的搜索框更适合移动设备
- cron - 如何在 crontab 中安排 Teradata 查询?