3

我想动态导入反应图标

这适用于 Javascript,但我如何将其转换为 Typescript 而不会出现各种错误?

代码:

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

如果有帮助,这是来自 react-icons 的 .d.ts 文件的输出:

// 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';
4

1 回答 1

3

你可以这样做:

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})

甚至更短:

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

必须说它感觉有点hacky,所以会尝试直接从包中导入。

于 2020-06-03T12:34:02.007 回答