【问题标题】:React routing showing wrong page反应路由显示错误的页面
【发布时间】:2022-11-30 06:23:00
【问题描述】:

我试图弄清楚反应路由,但路由仍然显示主页而不是指定页面。因此,当用户使用路由 /howto 时,howto.tsx 文件的 html 会显示。现在,当您转到 /howto 时,它会显示来自 _App.tsx 的 html。控制台中也没有错误。 index.tsx

import React, { Component } from 'react';
import { BrowserRouter as Router,Routes, Route, Link } from 'react-router-dom';
import MyApp from './_app';
import HowTo from './howto';
  
class App extends Component {
  render() {
    return (
       <Router>
           <div className="App">
            <ul className="App-header">
              <li>
                <Link to="/">Home</Link>
              </li>
              <li>
                <Link to="/howto">How to</Link>
              </li>
            </ul>
           <Routes>
                 <Route path='/' element={< MyApp />}></Route>
                 <Route path='/howto' element={< HowTo />}></Route>
          </Routes>
          </div>
       </Router>
   );
  }
}
  
export default App;

_app.tsx


import type { AppProps } from 'next/app'
import Link from 'next/link'

import '../styles/globals.css'

const MyApp = () => {
  return (
    <div>
      <div className="flex flex-col justify-center items-center h-[50vh]">
        <p className="text-black text-9xl">
          Beebate
        </p>
      </div>
      <div className="flex flex-col justify-center items-center h-[10vh]">
        <Link href="/howto">
          <button
            onClick={() => {}}
            className="bg-[#FF5C00] opacity-70 h-[10vh] w-[20vh] text-3xl rounded-xl"
          >
            Continue
          </button>
        </Link>
      </div>
    </div>
  )
}

export default MyApp

【问题讨论】:

  • 你能展示howto的代码吗?
  • 我没有看到任何问题这个具体代码。您能否编辑帖子以包含更完整的 minimal reproducible example 和重现任何问题的确切步骤?
  • 从“下一个/链接”导入链接,但它通过 react-router-dom 路由尝试从 react-router-dom 导入链接
  • 哦,等等,那是 nextjs 吗?如果在下一个应用程序中不需要他,请扔掉 react-router-dom
  • 是的,它是下一步,我应该如何使用路线呢?

标签: reactjs react-router-dom


【解决方案1】:

Next.js 使用文件系统在应用程序中启用路由。 Next 会自动将 pages 目录下每个扩展名为 .js、.jsx、.ts 或 .tsx 的文件视为路由。所以不需要 react-router-dom。这很可能是问题所在。 nextjs 很困惑,react-router-dom 覆盖了现有的路由。

            <div>
                <h1>Home Page</h1>
                <Link href='/article'>
                    <a>Articles</a>
                </Link>
                <br/>
                <Link href='/book'>
                    <a>Books</a>
                </Link>
            </div>

类似的东西已经完成了工作

【讨论】:

  • 我删除了文件和库,但 /howto 仍然显示 _app.tsx 而不是 howto.tsx
  • 编辑了问题,因为索引应该像上面那样。并记住你的文件路径也是你的 url 意味着 pages/folder/maybeAnotherFolder/File 所以“./someSubfolder/AnotherFolder/howto.tsx”会导致 href="someSubfolder/AnotherFolder/howto"
  • @Devium freecodecamp.org/news/routing-in-nextjs-beginners-guide 有一个非常快速且解释清楚的教程。可以推荐一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 2022-06-25
  • 1970-01-01
相关资源
最近更新 更多