美文网首页
React forwardRefs中使用泛型

React forwardRefs中使用泛型

作者: 头上有煎饺 | 来源:发表于2022-03-18 16:42 被阅读0次

1 问题

函数组件要想使用ref就得用forwardRef包裹组件,但是包裹了之后定义就变了,之前的泛型定义就不见了,是在是痛苦,特别是函数体内要用到泛型的时候

// 比如有这么一个组件
function Component<T>(props: P) {
  // 里面有使用到泛型
  const [data, setData] = useState<T[]>([])
  return 
}
// 用forwardRef后泛型就不见了
forwardRef(Component)

// 这样用就会报错
<Component<string>/>

2 解决

推荐最后一种方法
参考地址

// 防止打不开网页复制一下
// Redecalare forwardRef
declare module "react" {
  function forwardRef<T, P = {}>(
    render: (props: P, ref: React.Ref<T>) => React.ReactElement | null
  ): (props: P & React.RefAttributes<T>) => React.ReactElement | null;
}


// Just write your components like you're used to!

type ClickableListProps<T> = {
  items: T[];
  onSelect: (item: T) => void;
};
function ClickableListInner<T>(
  props: ClickableListProps<T>,
  ref: React.ForwardedRef<HTMLUListElement>
) {
  return (
    <ul ref={ref}>
      {props.items.map((item, i) => (
        <li key={i}>
          <button onClick={(el) => props.onSelect(item)}>Select</button>
          {item}
        </li>
      ))}
    </ul>
  );
}

export const ClickableList = React.forwardRef(ClickableListInner);

相关文章

  • React forwardRefs中使用泛型

    1 问题 函数组件要想使用ref就得用forwardRef包裹组件,但是包裹了之后定义就变了,之前的泛型定义就不见...

  • Java-API-集合框架(三)-泛型

    泛型的由来和基本使用 泛型的擦除 泛型类的使用 泛型方法的使用 泛型接口 泛型通配符(?) 通配符? 在api中的...

  • Kotlin 泛型

    Kotlin 泛型 1. 泛型类 定义一个泛型类 使用 在继承中 使用 2. 泛型函数 使用 3. 泛型的擦除 无...

  • 四、Java高级--1、泛型

    泛型定义:数据类型参数化,提前定义好集合中放入什么类型集合框架中没使用泛型和使用泛型的比较 泛型规则和限制1、泛型...

  • 夯实JAVA基础之 - 泛型

    泛型的定义及使用 1. 定义泛型: 2. 类中使用泛型 3. 使用泛型类 4. 使用泛型的优势? 多泛型变量的定义...

  • Java泛型:类型擦除

    前情回顾 Java泛型:泛型类、泛型接口和泛型方法 类型擦除 代码片段一 显然在平时使用中,ArrayList (...

  • C#里 泛型Where和 new()的使用

    在C#中,泛型的使用非常广泛,为了泛型调用安全,经常需要对所使用的类型进行约束。在对泛型的约束中,最常使用的关键字...

  • 泛型

    泛型 1.为什么要有泛型?2.泛型有什么好处?3.Swift泛型语法4.泛型的使用 为什么要有泛型 在编程世界中,...

  • 想理解泛型吗?看这一篇就够了!

    一、前言二、泛型类2.1 概述Java中泛型使用情况大致包括三种:泛型类、泛型接口、泛型方法 本节演示泛型类。 2...

  • JavaSE学习笔记——泛型

    泛型在集合中的使用集合中不使用泛型时: public void test1(){ //1.在集合中没有使用...

网友评论

      本文标题:React forwardRefs中使用泛型

      本文链接:https://www.haomeiwen.com/subject/zvtwdrtx.html