我们在react项目中的文件夹src/html下有一个HTML文件列表.现在我们需要读取HMTL文件中的菜单项,并使用React组件显示它们.HTML包含用于保存菜单项的元素,还有其他部分的内容.你能指导我从HTML到React App显示菜单的实现方式吗?

推荐答案

使用cheerio个库.

我从sample.html中提取了菜单项,并将它们作为props 传递给MenuComponent.

App.js

import React, { useEffect, useState } from "react";
import MenuComponent from "./MenuComponent";

const App = () => {
  const [menuItems, setMenuItems] = useState([]);
  useEffect(() => {
    const fetchMenuItems = async () => {
      try {
        const response = await fetch("sample.html");
        const htmlContent = await response.text();

        const cheerio = require("cheerio");
        const $ = cheerio.load(htmlContent);

        const extractedMenuItems = [];
        $("nav ul li").each((index, element) => {
          extractedMenuItems.push($(element).text());
        });

        setMenuItems(extractedMenuItems);
      } catch (error) {
        console.error("Error fetching or parsing HTML:", error);
      }
    };

    fetchMenuItems();
  }, []);

  return (
    <div>
      <h1>Your React App</h1>
      <MenuComponent menuItems={menuItems} />
    </div>
  );
};

export default App;

MenuComponent.js

import React from "react";

const MenuComponent = ({ menuItems }) => {
  return (
    <div>
      <h2>Menu</h2>
      <ul>
        {menuItems.map((item, index) => (
          <li key={index}>{item}</li>
        ))}
      </ul>
    </div>
  );
};

export default MenuComponent;

Sample.html(位于公共文件夹中)

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Sample HTML</title>
  </head>
  <body>
    <nav>
      <ul>
        <li>Home</li>
        <li>About</li>
        <li>Contact</li>
      </ul>
    </nav>

    <div>
      <h1>Main Content</h1>
      <p>This is the main content of the page.</p>
    </div>
  </body>
</html>

如果你想玩这code美元

Html相关问答推荐

CSS Flex行之间的空间很大

子元素以元素X开始和结束的元素的XPath?

将弹性容器设置为内容宽度

为什么根捕获上的`min-height`溢出,而`height`没有?

HTMLTag属性内的svelte+TS类型声明

HX-POST未使用正确的操作(路径)

阴影部分内部的ionic Select 元素

带有图像的虚线边框

网格布局中的组件

如何使元素具有粘性

MUI 日期 Select 器要包含的日期

如何垂直平移一个元素,使其新位置位于另外两个元素之间?

透明渐变凹矩形

在随机图像下对齐文本

如何从 razor 页面打开 html 页面

我用 ejs 修复了一个奇怪的语法错误,我想知道问题出在哪里

左右图像,响应页面大小并居中

用 flexbox 和 overflow 覆盖

所有幻灯片上的 Quarto RevealJS 标题