片段应包含多个 child - 否则根本不需要片段 react/jsx-no-useless-fragment

Fragments should contain more than one child - otherwise, there‘s no need for a Fragment at all react/jsx-no-useless-fragment

我在我的 React 项目的 app.js 文件中收到此错误:-

片段应包含多个 child - 否则根本不需要片段 react/jsx-no-useless-fragment

import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import NavMenu from './components/NavMenu';

export default function App() {
  return (
    <>
      <Router>
        <NavMenu />
      </Router>
    </>
  );
}

我一直在努力寻找解决方案,但一直找不到,所以有人可以告诉我如何解决这个问题

如有任何帮助,我们将不胜感激

您的组件 return 相当于:

    <React.Fragment>
      <Router>
        <NavMenu />
      </Router>
    </React.Fragment>

<></> 是 shorthand 语法。

该片段适用于您想要 return 多个组件或元素作为同级元素的情况。但是因为一个组件只能 return 一件事,我们可以使用片段在两个组件周围放置一种“隐形包装器”,使它们看起来是一个。

下面是组件可能希望使用片段的示例:

  return (
    <>
      <Navbar />
      <Router>
        <Routes>
          <Route index element={<Home />} />
        </Routes>
      </Router>
    </>
  );

因为您只是 return 在该片段中添加一个元素,它实际上没有做任何事情,所以只需删除该片段或在其中包含另一个组件。

React 不应该 return 相邻元素,所以如果你只是 return 一个组件或元素,则不需要使用 <></><React.Fragment></React.Fragment>(这些是等价的)。

您可能会遇到需要 return 2 div 个元素并排放置的情况(例如兄弟姐妹)。那样的话<></>就派上用场了。

我今天遇到了同样的错误,因为我有以下方式的三元运算符:

<>
  {isCheck ? (
    <button
     ....
    >
    </button>
  ) : (
    <div className={class}>
     ....
    </div>
  )}
</>

我意识到,如果没有包装元素,它就不是 运行 它应该是的样子。

我的解决方案是将 Fragment 替换为 div。 这让 lint 很高兴,红旗也消失了。

React 不应该 return 相邻元素,所以如果你只是 return 一个组件或元素,则不需要使用 <></>.

删除<> </>,因为它现在可能会妨碍您的程序

但将来您可能需要使用这些组件超过 1 个。