我创建了一个使用Reaction Rout6的Reaction 18应用程序

<body class="h-full">
<div id="root"></div>
<script src="/src/main.tsx"
        type="module"></script>
</body>
</html>

Main.tsx:

const container = document.getElementById('root')
const root = createRoot(container)

root.render(
  <React.StrictMode>
    <BrowserRouter basename={'/'}>
      <Routes>
        <Route path="/" element={<Shell />} />
      </Routes>
    </BrowserRouter>
  </React.StrictMode>
)

Shell.tsx:

export const Shell = () => {
  return (
    <div className="flex min-h-full flex-col">
      <header className="shrink-0 bg-gray-900">
        <div className="mx-auto flex h-16 max-w-7xl items-center justify-between px-4 sm:px-6 lg:px-8">
          <img
            className="h-8 w-auto"
            src="https://tailwindui.com/img/logos/mark.svg?color=indigo&shade=500"
            alt="Your Company"
          />
          <div className="flex items-center gap-x-8">
            <button
              type="button"
              className="-m-2.5 p-2.5 text-gray-400 hover:text-gray-300"
            >
              <span className="sr-only">View notifications</span>
              <svg
                className="h-6 w-6"
                fill="none"
                viewBox="0 0 24 24"
                strokeWidth="1.5"
                stroke="currentColor"
                aria-hidden="true"
              >
                <path
                  strokeLinecap="round"
                  strokeLinejoin="round"
                  d="M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75v-.7V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0"
                />
              </svg>
            </button>
            <a href="#" className="-m-1.5 p-1.5">
              <span className="sr-only">Your profile</span>
              <img
                className="h-8 w-8 rounded-full bg-gray-800"
                src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
                alt=""
              />
            </a>
          </div>
        </div>
      </header>

      {/*3 column wrapper */}
      <div className="mx-auto w-full max-w-7xl grow lg:flex xl:px-2">
        {/*Left sidebar & main wrapper*/}
        <div className="flex-1 xl:flex">
          <div className="border-b border-gray-200 px-4 py-6 sm:px-6 lg:pl-8 xl:w-64 xl:shrink-0 xl:border-b-0 xl:border-r xl:pl-6">
            <Menu></Menu>
          </div>

          <div className="px-4 py-6 sm:px-6 lg:pl-8 xl:flex-1 xl:pl-6">
            {/*Main area */}
          </div>
        </div>

        <div className="shrink-0 border-t border-gray-200 px-4 py-6 sm:px-6 lg:w-96 lg:border-l lg:border-t-0 lg:pr-8 xl:pr-6">
          {/*Right column area */}
        </div>
      </div>
    </div>
  )
}

MenU.S.tsx:

export const Menu = () => {
  return (
    <div>
      {navigation.map((item) => (
        <a
          key={item.name}
          href={item.href}
          className="text-gray-600 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium"
        >
          {item.name}
        </a>
      ))}
    </div>
  )
}

当点击Dashboard菜单项时,应用程序会往返到后端,重新加载整个应用程序,这会导致闪烁效果.

我做错了什么?

带REPRO的回购可找到here

推荐答案

Menu组件呈现原始锚标记,该标记将向服务器请求链接的目标,例如,它重新加载页面.相反,使用从react-router-dom中导出的Link组件来"拦截"导航操作,并完全在客户端处理所有内部应用程序路由/导航.

示例:

import { Link } from 'react-router-dom';

export const Menu = () => {
  return (
    <div>
      {navigation.map((item) => (
        <Link
          key={item.name}
          to={item.href} // <-- internal paths in the App
          className="text-gray-600 .... font-medium"
        >
          {item.name}
        </Link>
      ))}
    </div>
  );
};

Reactjs相关问答推荐

如何使用React Router创建响应式主详细信息应用程序?

如何在useEffect中使用useParams()

有没有方法覆盖NextJS 14中的布局?

避风港访问端口以包含Reaction应用程序

我应该如何管理设置组件初始状态的复杂逻辑?

获取未捕获的错误:Gatsby生产版本上的最小化react 错误#418

React:关于useEffect钩子如何工作的困惑

根据用户 Select 的注册类型更改表单字段

在 golang 服务器中刷新或直接 url 路径时响应 404

Firebase查询返回随机用户数据,而不是过滤后的用户数据

当每个元素都可拖动时,移动设备上的滚动列表出现问题

基于标记名的博客详细信息分组没有发生

在 React 中将路径与查询变量匹配

无法读取未定义的react native 的属性参数

如何将我的 ID 值传递给下一个组件?

在 Formik 表单中访问子组件的值

是什么导致了这个令人惊讶的数组导致 React

用 scss 覆盖 MUI

如何在 React 中制作动画?

Cypress 中的 process.env 空对象