小编ric*_*980的帖子

路由器基本名称无法匹配 URL,因为它不是以基本名称开头

升级到 React Router v6 后,我的应用程序停止工作,并且我未能找到在版本 6 中实现相同行为的方法。

这是我升级到的版本:react-router-dom 6.2.1。

这是与先前版本一起使用的代码5.2.0:

<Router basename="/#">
  <Route path="/login">
    <Login />
  </Route>
  <Route path="/">
    <Home />
  </Route>
</Router>

            
<Link to="/login">Login</Link>
Run Code Online (Sandbox Code Playgroud)

我导航到http://localhost:3000/#/login. 现在连也http://localhost:3000行不通了。

这是我在浏览器控制台中收到的完整错误:

<Router basename="/#"> 无法匹配 URL“/”,因为它不是以基本名称开头,因此 <Router> 不会呈现任何内容。

我已经阅读了 StackOverflow、Github 问题、迁移指南中能找到的所有内容,尝试了许多解决方法,但似乎没有任何方法可以实现旧的行为。就像 v6 根本不尊重 URL 片段一样。

我需要 URL 片段,以便当用户刷新页面或为 URL 添加书签时,它实际上可以工作。

如何使其与 React Router v6 一起工作?

reactjs react-router

13
推荐指数
2
解决办法
2万
查看次数

无法获得非常简单的 i18n 和动态路由来与 Next.js 一起使用

首先,我已经阅读了 Next.js 文档,通过了教程,查看了许多示例,但最终,我仍然无法使用 Next.js 实现一个非常简单的事情。

我有一个具有以下区域设置的应用程序:en和de。

路线如下:

/en/things/[id]
/de/things/[id]
Run Code Online (Sandbox Code Playgroud)

所以基本上,我需要用两种语言显示一些与事物 ID 无关的静态文本。这些只是所有 ID 都相同的纯文本。然后我有一些实际上需要路径中的 ID 的 AJAX。

现在麻烦开始了:

  1. 如果我没有getStaticProps,things/[id].js我会收到此错误:
Error: MISSING_MESSAGE: No messages were configured on the provider.
Run Code Online (Sandbox Code Playgroud)
  1. 然后我添加getStaticProps这样的内容:
export async function getStaticProps({locale}) {
  return {
    props: {
      messages: await import(`../messages/${locale}.json`)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

并得到这个错误:

Error: getStaticPaths is required for dynamic SSG pages and is missing for '/things/[id]'.
Run Code Online (Sandbox Code Playgroud)
  1. 然后我getStaticPaths这样添加:
export const getStaticPaths = () => ({
  paths: [], …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs next.js nextjs-dynamic-routing

5
推荐指数
1
解决办法
5328
查看次数