Javascript React路由器URL有效,但组件无效
React Router更改URL,但组件未更新。我检查了StackOverflow的许多解决方案,但仍然不起作用。 这是我的密码: App.js:Javascript React路由器URL有效,但组件无效,javascript,reactjs,react-router,Javascript,Reactjs,React Router,React Router更改URL,但组件未更新。我检查了StackOverflow的许多解决方案,但仍然不起作用。 这是我的密码: App.js: 函数应用程序(){ 返回( ); } 导出默认应用程序; 侧导航: function Sidebar(){ return( <div className="sidebar-wrapper"> <div className="sidenav&q
函数应用程序(){
返回(
);
}
导出默认应用程序;
侧导航:
function Sidebar(){
return(
<div className="sidebar-wrapper">
<div className="sidenav">
<NavLink to={'/'}>Dashboard</NavLink>
<NavLink to={'/invoices/1'}>Test1</NavLink>
<NavLink to={'/invoices/2'}>Test2</NavLink>
<NavLink to={'/invoices/3'}>Test3</NavLink>
</div>
</div>
);
}
export default Sidebar;
函数侧栏(){
返回(
仪表板
测试1
测试2
测试3
);
}
导出默认边栏;
index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from "react-router-dom";
import './static/index.css';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>,
document.getElementById('root')
);
从“React”导入React;
从“react dom”导入react dom;
从“react router dom”导入{BrowserRouter};
导入“/static/index.css”;
从“./App”导入应用程序;
ReactDOM.render(
,
document.getElementById('root'))
);
我对代码的任何其他改进都不太熟悉,也不太开放。只需通过
exact
prop就可以了
<Switch>
<Route exact path={'/'} component={withRouter(Dashboard)} />
<Route exact path={'/invoices/:objectId'} component={withRouter(Table)} />
</Switch>
我从另一篇与此问题相关的帖子中找到了解决我的问题的方法:
我已经在我的表组件中将这些道具作为依赖项传递,现在每当我更改URL参数时,它都会重新加载我的数据。在另一篇文章中还提供了其他更好的处理方法。当组件已经包装在
路线中时,为什么要将它们包装在路线中代码>组件?
我看没有理由那样做
请阅读。这两条路线上的组件似乎是相同的(您没有显示)。首先是的,它没有参数,并且按预期为空。但是,当我尝试跳转其他组件时,它不是重新加载组件。编辑:更改它以清除任何混乱。我尝试过。它加载仪表板,然后加载我单击的第一个导航链接。然后单击其他导航链接时不会更改。但当我点击仪表板时,它又起作用了。@HürkanDoğan你的问题与路由器无关。它与实现表组件的方式有关,该组件在:objectId
更改通知时不会重新呈现。我阅读了文档并删除了用法。
<Switch>
<Route exact path={'/'} component={withRouter(Dashboard)} />
<Route exact path={'/invoices/:objectId'} component={withRouter(Table)} />
</Switch>
useEffect(() => {
retrieveInvoices();
}, [props.match.params.objectId]);