错误:useHref() 只能在 <Router> 组件的上下文中使用

Sha*_*baz 4 reactjs react-router react-router-dom

**当我直接在我的路由器组件中写入我的导航栏组件内容时。它工作正常,但是当我在导航栏组件中写入该内容时,它会生成以下错误

错误:useHref() 只能在组件上下文中使用。 .**

我在用着 "react-dom": "^17.0.2", "react-router-dom": "^6.0.0-beta.6",

以下是我的组件..

我的导航栏组件:-

import { Link } from "react-router-dom";
// import styles from './NavBar.module.css';
export const NavBar = () => {
  return (
      <nav>
        <Link to="/"> Home </Link>
        <Link to="/about"> About </Link>
        <Link to="/product"> Product </Link>
      </nav>
  );
}
Run Code Online (Sandbox Code Playgroud)

我的路线组件:-

import { BrowserRouter as Router, Switch, Route, Routes} from "react-router-dom";

// importing Component's
import { Home } from "./Components/Home/Home";
import { About } from "./Components/About/About";
import { Products } from "./Components/Products/Products";
import { ProductItems } from "./Components/ProductItems/ProductItems";
import  {NavBar}  from "./Components/NavBar/NavBar";
import { Fotter } from "./Components/Fotter/Fotter";

export const RouterConfig = () => {
  return (
    <Router>
      <NavBar />
      <Switch>
        <Route exact path="/" component={Home} />
        <Route path="/about" component={About} />
        <Route exact path="/product" component={Products} />
        <Route path="/product/:id" component={ProductItems} />
        <Route path="*" component={() => <h2>404 Not Found </h2>} />
      </Switch>
      {/* <Fotter />' */}
    </Router>
  );
};
Run Code Online (Sandbox Code Playgroud)

Mar*_*oG8 7

import {BrowserRouter as Router} from "react-router-dom";
Run Code Online (Sandbox Code Playgroud)

在 App.js 或以上的 index.js 组件中使用,并将您的组件包装在 Router 中。然后问题就会消失;-)在你的情况下我看到两个选择:

  1. 索引.js

import {BrowserRouter as Router} from "react-router-dom";
Run Code Online (Sandbox Code Playgroud)

或者使用App组件而不是RouterConfig组件。

  1. 应用程序.js

import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import { BrowserRouter as Router } from "react-router-dom";

ReactDOM.render(
  <React.StrictMode>
    <Router>
      <App />
    </Router>
  </React.StrictMode>,
  document.getElementById("root")
);
Run Code Online (Sandbox Code Playgroud)

我尽力解释它。希望这对您有帮助;-) 祝您好运!如果您仍然感到困惑,请查看此处 => React Router V6 - 错误:useRoutes() 只能在 <Router> 组件的上下文中使用