我想用一个参数将用户导航到一个特定的url,并将其视为一个带有"查看项目"按钮的列表项目.

No routes matched location "/explore/0xD78Fb56DB0b68F9766975FEEbf7bFd0CF65C9F11" 

在我的应用程序中.我有这个

<BrowserRouter>
      <Header style={styles.header}>
        <Navbar />
        <Account />
      </Header>
      <div style={styles.content}>
        <Wrapper>
          <Routes>
            <Route path="/" element={<Home />} />
            <Route path="create" element={<Creation user={account} />} />
            <Route path="/explore" element={<Explore />} />
            <Route path='/dashboard' element={<Dashboard />} />
            <Route path='test' element={<Test />} />
          </Routes>
        </Wrapper>
      </div>
      </BrowserRouter>

所有这些路由都很好

我做了类似的事情(我跟着doctor )


return (
      <div style={{marginTop:'5em'}}>
        {isInitialized ?
        <div className='wrapper'>
          {eventArray.map(infoItem => (
            <div key={infoItem.id}>
            <CardEvent img={infoItem.pathImg ? infoItem.pathImg : lpass} 
            title={infoItem.idName} 
            date={infoItem.eventDate.toString()}
            />
            <Link to={`/explore/${infoItem.id}`}>View event </Link>
        </div>
        )
        )}
        <Routes>
        <Route 
        path='explore/:id'
        element={<Test />}
        />
      </Routes>
      </div> 
      : <p>Error</p>
      }
</div>

我做错了什么?

推荐答案

呈现勘探组件的路由需要指定一个尾随通配符匹配器"*",这样子路由也可以匹配.

Descendent <Routes>

<Routes>
  <Route path="/" element={<Home />} />
  <Route path="create" element={<Creation user={account} />} />
  <Route
    path="/explore/*" // <-- add trailing wildcard matcher
    element={<勘探 />}
  />
  <Route path='/dashboard' element={<Dashboard />} />
  <Route path='test' element={<Test />} />
</Routes>

请记住,<Link to={`/explore/${infoItem.id}`}>View event</Link>指定的是绝对路径"/explore/:id",嵌套的Routes组件从父路径生成:

<Link to={`/explore/${infoItem.id}`}>View event</Link>

...

<Routes>
  <Route 
    path='/:id' // <-- Omit "/explore" from path
    element={<Test />}
  />
</Routes>

Edit react-router-v6-no-routes-matched-location

或者,要使用相对布线,请省略前导的"/"斜杠,并与infoItem.id相对链接.

<Link to={`${infoItem.id}`}>View event</Link>

...

<Routes>
  <Route path=':id' element={<Test />} />
</Routes>

使现代化

那么,在一个新的页面中,而不是在我的组件下,是否仍然可以呈现?

对为此,我建议进行一次小的重构,将<Route path=':id' element={<Test />} />移动到主路由.使用布局管线渲染Outlet,嵌套索引管线(专用于勘探)和嵌套管线(专用于Test).从勘探中删除Routes代码.

例子:

<Routes>
  <Route path="/" element={<Home />} />
  <Route path="create" element={<Creation user={account} />} />
  <Route path="/explore">
    <Route index element={<勘探 />} />   // "/explore"
    <Route path=":id" element={<Test />} /> // "/explore/:id"
  </Route>
  <Route path="/dashboard" element={<Dashboard />} />
  <Route path="test" element={<Test />} />
</Routes>

勘探

return (
  <div style={{marginTop:'5em'}}>
    {isInitialized ?
      <div className='wrapper'>
        {eventArray.map(infoItem => (
          <div key={infoItem.id}>
            <CardEvent
              img={infoItem.pathImg ? infoItem.pathImg : lpass} 
              title={infoItem.idName} 
              date={infoItem.eventDate.toString()}
            />
            <Link to={`/explore/${infoItem.id}`}>View event </Link>
          </div>
        ))}
      </div> 
      : <p>Error</p>
    }
  </div>
);

Edit react-router-v6-no-routes-matched-location (forked)

Reactjs相关问答推荐

实时收听react前端应用程序中的webhook响应

为什么我的react虚拟化列表不显示滚动条,除非我确保高度低于rowCount*rowHeight?

面对动画警告:未指定`useNativeDriver`.这是必需的选项,并且必须在REACT本机中显式设置为`true`或`False`

如何从react 18-nextjs 14应用程序路由中的客户端组件呈现服务器组件?

更改点几何体的坐标会将其隐藏

React 错误无法读取未定义的属性(读取id)#react

生产部署:控制台中 Firebase 无效 api 密钥错误

ReactJS 共享上下文

React redux 工具包 useGetFilterProductsQuery 和 useGetFilterProductsByCategoriesQuery 未定义为函数

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

修改React数据表扩展组件

React - 使用 useEffect 还是直接在 onChange 方法中更改值对性能最好?

如何处理页面加载时发生的 reactjs 错误?

使用dayjs时如何在输入类型日期时间本地字段中设置默认值?

null 不是对象(判断RNSound.IsAndroid)

如何将值从下拉列表传递到 select 上的输入?响应式JS

如何解决在 react.js 中找不到模块错误

如何在props 更改时运行自定义挂钩?

React LinkProps 的含义

a.active 类在导入 x.scss 文件时有效,但在使用 x.module.scss 时无效