小编cod*_*to7的帖子

如何正确使用 Typescript 中的 React.lazy() 导入带有泛型类型参数的 React 组件?

(在https://github.com/codingismy11to7/lazy-component-typing复制)

我猜这是一个问题@types/react和LazyExoticComponent定义......

在React.lazy()带有类型参数的组件上使用时,Typescript 无法再编译项目。

给定组件:

import React from "react";

export interface Props<T> {
  value: T;
  valueCallback: (t: T) => void;
}

export default function TypedComponent<T>(props: Props<T>) {
  return (
    <>
      <div>{`${props.value}`}</div>
      <button onClick={() => props.valueCallback(props.value)}>click</button>
    </>
  )
}
Run Code Online (Sandbox Code Playgroud)

这编译:

import React, {useState} from "react";
import TypedComponent from "./TypedComponent";

export default function StrictComponent() {
  const [state, setState] = useState("blah");

  return (
    <TypedComponent value={state} valueCallback={setState}/>
  );
}
Run Code Online (Sandbox Code Playgroud)

虽然这不会:

import React, {lazy, useState} from "react"; …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs typescript-generics

5
推荐指数
1
解决办法
1049
查看次数

标签 统计

reactjs ×1

typescript ×1

typescript-generics ×1