项目是 Umi 创建的,用的路由插件是 react-router-dom
。
有两个页面,第一个页面通过 Link
组件跳转到第二个页面,第二页页面是 router
文件夹里的 router-page
,第一个页面的代码如下:
import { Link } from 'umi';export default function HomePage() { return ( <div> <ol style={{ display: 'flex', flexDirection: 'column' }}> <li> <Link to="/router/router-page">路由</Link> </li> </ol> </div> );}
.umirc
里也的路由也添加好了:
{ path: '/router/router-page', component: 'router/router-page' },
可以成功的从第一页跳转到第二页。
然后第二页 router-page.tsx
里的代码如下:
import { Component } from 'react';import { NavLink, Route, Routes } from 'react-router-dom';export default class RouterPage extends Component { render() { return ( <div style={{ margin: '20px' }}> <nav> <NavLink to="">首页</NavLink> <NavLink to="/about">关于</NavLink> </nav> <RouterView></RouterView> </div> ); }}function RouterView() { return ( <Routes> <Route path="" element={<Home></Home>}></Route> <Route path="/about" element={<About></About>}></Route> </Routes> );}function Home() { return ( <div> <h1>首页内容</h1> </div> );}function About() { return ( <div> <h1>关于页面内容</h1> </div> );}
页面显示如下:
现在的问题是,我点击“关于”按钮,页面直接变白板了,然后控制台提示:
You rendered descendant <Routes> (or called
useRoutes()
) at "/router/router-page" (under <Route path="/router/router-page">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.Please change the parent <Route path="/router/router-page"> to <Route path="/router/router-page/*">.
No routes matched location "/about"
根据它的提示,我去把 Link
改了下:
<Link to="/router/router-page/*">路由</Link>
结果第二个页面全都变白板了。
我是 react 新手,想请教下大家这个问题应该如何解决?
import { BrowserRouter, Routes, Route, Link } from "react-router-dom";import ReactDOM from 'react-dom/client'function HomePage() { return ( <div> <Link to="/router/router-page">跳转路由页面</Link> </div> );}function RouterPage() { return ( <div> <h1>路由页面</h1> <Link to='/router/router-page/RouterPageHome'>RouterPageHome</Link> <Link to='/router/router-page/RouterPageAbout'>RouterPageAbout</Link> <Routes> <Route path="RouterPageHome" element={<div>路由页面Home</div>}></Route> <Route path="RouterPageAbout" element={<div>路由页面About</div>}></Route> </Routes> </div> );}function App() { return ( <div> <BrowserRouter> <Routes> <Route path="/" element={<HomePage />}></Route> <Route path="/router/router-page/*" element={<RouterPage />} /> </Routes> </BrowserRouter> </div> );}ReactDOM.createRoot(document.getElementById('root')).render(<App />)
根据你的描述,问题可能出在 RouterView
的定义上。在 RouterView
中,你正在渲染 Home
和 About
组件,但它们的路径似乎不匹配。在 React Router v6 中,你需要在 <Route>
组件上设置 element
属性,而不是直接渲染组件。
你的 RouterView
应该像这样修改:
function RouterView() { return ( <Routes> <Route path="/router/router-page" element={<Home></Home>}></Route> <Route path="/router/router-page/about" element={<About></About>}></Route> </Routes> );}
这将确保只有当路径为 "/router/router-page" 或 "/router/router-page/about" 时,Home
和 About
组件才会被渲染。如果路径不匹配这些,React Router 将选择其他匹配的组件。
然后,你的 Link
组件应该像这样修改:
<Link to="/router/router-page/*">路由</Link>
现在,当你点击“关于”按钮时,React Router 将匹配正确的路由,并渲染正确的组件。
我正在尝试在我的URL中传递参数,但我的阅读有问题。我正在使用react-router v4。 网址:http://localhost:3000/reset?token=123我试着这样读: 但这打印空对象。奇怪的是,我试图将问号更改为其他字符,看起来它解决了我的问题,但我还是想保留问号。 网址:http://localhost:3000/reset_token=123 这已经工作了< code
例如我创建了一个dataHook main.ts中 页面有个按钮就执行v.value += 1,为什么console.log还是原值1呢?
在放开最后一行注释后执行 : A的引用内存反而降低了,A对B的引用好像并没有解除,为什么会降低内存了? 为什么A对象的内存降低了呢
React中的useCallback 下面的代码中Com是父组件,Button是子组件,子组件接收父组件的count2和setCount2,子组件中使用了memo(Button)导出 子组件Button 在上面的代码中,如果点击count1++的按钮(不使用useCallback),父组件会重新渲染,但是子组件也会刷新,然而子组件中的count2依赖没有变化,所以只能是handleClick2函数
我有一个模型(加载到内存中),它在生产中使用来自消息队列消息/数据来进行预测。我有一个单独的过程,每隔几个小时重新训练模型(必要的)。在每次重新训练发生时,触发模型将新训练的版本重新加载到内存中的最佳方法是什么?目前,我只是让生产模型每隔一段时间或每1000条消息重新加载一次。 我想,如果不是消息队列,而是一个WebServer的话,这会更容易。这样我就可以有一个可以触发重新加载的endpoint
<script setup lang="ts"> import UserCommodityInfo from "@/store/home/commodity/Info.ts"; import { storeToRefs } from "pinia"; import CardChild from './CardChild/index.vue' import { ref, onMounted } fr