me-*_*-me 4 javascript typescript reactjs
我正在尝试查找 React.createRef 的输入内容。标头是一个自定义组件。 header.current总是说
(属性)React.RefObject.current:未知对象的类型为“未知”。
我可以将其设置为打字<any>,但这是最简单的方法。如何让 Typescript 发挥良好作用并停止抱怨。
Example: React.createRef<any>()
Run Code Online (Sandbox Code Playgroud)
完整代码:
const header = React.createRef();
const { container } = render(
<Header{...props} headerRef={header} />,
);
const el = header.current.getButtonElement("button");
Run Code Online (Sandbox Code Playgroud)
我什至尝试将其设置为 HTMLDivElement 这就是它返回的内容。
const header = React.createRef<HTMLDivElement>();
Run Code Online (Sandbox Code Playgroud)
但下面仍然给我一个错误: (property) React.RefObject.current: HTMLDivElement | null 对象可能为“null”。
const el = header.current.getButtonElement("button");
Run Code Online (Sandbox Code Playgroud)
这是有道理的。TypeScript 试图警告您,对可能未定义的内容调用 getButtonElement 是“危险的”。您可以通过首先优化类型来解决此问题,如下所示:
const header = React.createRef<HTMLDivElement>();
// In test
const currentHeader = header.current;
if (!currentHeader) {
// Handle the case where header isn't set yet
}
currentHeader.getButtonElement("button"); // At this point TypeScript knows currentHeader can't be null so the type check passes
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8724 次 |
| 最近记录: |