javascript - 使用 React,如何调用名称中带有变量的模块?

标签 javascript reactjs

我正在努力使用此 React 组件动态加载 SVG 图标。为什么不是 <MyIcon.icons[{name}] />在职的?

import React from 'react';
import PropTypes from 'prop-types';

import {
  IconHome,
  IconCow,
  IconDog,
} from '../Icon';


const MyIcon = ({
  name,
}) => (
  <div>
    <MyIcon.icons[{name}] />
    {name}
  </div>
);

MyIcon.icons = {
  home: IconHome,
  dog: IconCow,
  cow: IconDog,
};

MyIcon.propTypes = {
  name: PropTypes.string.isRequired,
};

export default MyIcon;

我收到以下错误:

Module build failed: SyntaxError: Unexpected token (13:22)

最佳答案

实现此目的的最简单方法是将要包含的组件分配给变量,如下所示:

import React from 'react';
import PropTypes from 'prop-types';

import {
  IconHome,
  IconCow,
  IconDog,
} from '../Icon';

const icons = {
  home: IconHome,
  dog: IconCow,
  cow: IconDog,
};

const MyIcon = ({ name }) => {
  const SelectedIcon = icons[name];
  return (
    <div>
      <SelectedIcon />
      {name}
    </div>
  )
};

MyIcon.propTypes = {
  name: PropTypes.string.isRequired,
};

export default MyIcon;

关于javascript - 使用 React,如何调用名称中带有变量的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49808395/

相关文章:

reactjs - 防止简单react组件之间替换引起的重新渲染

javascript - 单击 ReactJs 中的复选框时出现未定义错误

javascript - 正则表达式让我感到困惑,为什么它不能正确解析?

javascript - JSON Parse 拼接问题

javascript - jQuery 验证 addmethod - 如何返回不同的语言消息?

javascript - 如何使用 enzyme 区分这两种元素?

javascript - 如何从外部文件读取数据并将其存储为变量 javascript Three.js

javascript - 如何传递文本框的内容来设置谷歌地球插件中的相机?

javascript - React Desktop的ListView组件 : Issue rendering List Items from an Array

javascript - 文本更改时按钮的动画宽度