Tìm kiếm trang web

reactjs - Làm thế nào để tôi tạo thẻ JSX một cách động trong React sử dụng typescript?


Tôi muốn nhập react-icons một cách động.

Điều này hoạt động trong Javascript, nhưng làm thế nào để tôi chuyển nó sang Typescript mà không gặp đủ loại lỗi?

Mã:

import * as ReactIcons from 'react-icons/all';
const getIcon = (icon) => {
  const TagName = ReactIcons[icon];
  return <TagName />;
};

Đây là kết quả từ các tệp .d.ts của react-icons nếu điều đó hữu ích:

// node_modules/react-icons/all.d.ts
export * from './fa';
export * from './fa';
export * from './io';
export * from './md';
export * from './ti';
export * from './go';
export * from './fi';
export * from './gi';
export * from './gi';
export * from './gi';

Câu trả lời #1

Bạn có thể làm như sau:

import * as ReactIcons from 'react-icons/all';

type GetIconProps = {
  icon: keyof typeof ReactIcons;
}

const getIcon = ({icon}: GetIconProps) => {
  const TagName = ReactIcons[icon];
  return <TagName />;
};

// Example
getIcon({icon: keyof typeof ReactIcons})

Hoặc thậm chí ngắn hơn:

const getIcon = ({ icon }: GetIconProps) => {
  const TagName = ReactIcons[icon];
  return <TagName />;
};

Nhưng phải nói rằng cảm giác hơi tạm bợ, nên sẽ thử nhập trực tiếp từ gói thay vào đó.

Bài viết liên quan