reactjs 使用从其他文件导入的React图标

vsnjm48y  于 2023-02-08  发布在  React
关注(0)|答案(3)|浏览(137)

在一个react应用程序(由vite创建)中,我需要一个类别列表来创建导航菜单。我在另一个扩展名为**. js的文件中创建了这个列表。以对象数组**的形式:

// constants.js
import { MdHomeIcon, MdCodeIcon } from "react-icons/md";

export const categories = [
  { name: "New", icon: <MdHomeIcon /> },
  { name: "Coding", icon: <MdCodeIcon /> },
  { name: "ReactJS", icon: <MdCodeIcon /> },
];

react-icons软件包已安装。
我的问题是:在执行任何操作之前,react应用程序在控制台中返回语法错误:* * 未捕获的语法错误:应为表达式,但在constants.js中得到"〈"
解决该问题后:在
Sidebar.jsx中,我想Mapcategories**以构建一个包含名称和图标的列表。

// Sidebar.jsx
import { categories } from "./constants.js";

export const Sidebar = () => (
  <div>
    {categories.map((category) => (
      <div>
        <span>{category.icon}</span>
        <span>{category.name}</span>
      </div>
    ))}
  </div>
);
cetgtptt

cetgtptt1#

您不能将JSX包含在js文件中,但您的图标是从“react-icons/md”导入的,您可以将它们用作JSX元素。
如果要在constants.js中使用这些图标,请尝试将其重命名为constants.jsx

bpsygsoo

bpsygsoo2#

Map循环中存在错误。
你不能在map循环中返回两个子元素。解决这个问题的一个方法是使用React Fragment来 Package 那些组件。
https://reactjs.org/docs/fragments.html

// Sidebar.jsx
import { categories } from "./constants.js";

export const Sidebar = () => (
  <div>
    {categories.map((category) => (
      <React.Fragment>
        <span>{category.icon}</span>
        <span>{category.name}</span>
      </React.Fragment>
    ))}
  </div>
);

另外,你必须警惕列表和循环中的关键属性。
https://reactjs.org/docs/lists-and-keys.html
第三件事,将Icon调用作为obj的值附加,然后将其作为react组件调用

// Sidebar.jsx
import { categories } from "./constants.js";

export const Sidebar = () => (
  <div>
    {categories.map((category) => {
      const IconComponent = category.icon;
      return (
        <> // another way to use fragment
          <span>
            <IconComponent />
          </span>
          <span>{category.name}</span>
        </>
      )}
    )}
  </div>
);

最后但并非最不重要的一点是,您的代码中存在语法错误。循环的最后一行缺少一个

ibps3vxo

ibps3vxo3#

//data categories.js
export const categories = [
  { name: "New", icon: "Home" },
  { name: "Coding", icon: "Code" },
  { name: "ReactJS", icon: "Code" },
];
//sidebar.js
import { categories } from "./constants.js";
import { MdHomeIcon, MdCodeIcon } from "react-icons/md";

export const Sidebar = () => (
  <div>
    {categories && categories.map((category, i) => (
      <div key = {i}>
      {category.icon === "Code"? <MdCodeIcon/> : <MdHomeIcon/>}
      <span>{category.name}</span>
      <div/>
    ))}
  </div>
);

可以根据需要编辑代码

相关问题