【发布时间】:2021-12-07 07:42:45
【问题描述】:
我正在尝试在我的路由中设置一个自定义历史对象,以便能够在我的 redux 操作中使用它。我已经看到我们应该使用 'react-router' 中的<Router> 并在其中设置历史对象。这就是我所做的。
App.js
//** Import router */
import { Switch } from 'react-router-dom';
import { Router } from 'react-router';
import history from './hooks/useHistory';
const App = () => {
return (
<Router history={history}>
<MainNavigation />
<Switch>
<Routes />
</Switch>
</Router>
);
};
export default App;
MainNavigation.js
const MainNavigation = () => {
return (
<>
<div className='navigation'>
<ul>
<Link to='/'>
<li>Home</li>
</Link>
<Link to='/contact'>
<li>Contact</li>
</Link>
<Link to='/about'>
<li>A propos</li>
</Link>
<Link to='/user-profile'>
<li>Votre compte</li>
</Link>
</ul>
</div>
</>
);
};
export default MainNavigation;
最后,Routes.js
//** Import routers */
import { Redirect, Route } from 'react-router-dom';
const Routes = () => {
return (
<>
<Route path='/' exact component={MainLayout} />
<Route path='/about' exact component={About} />
<Route path='/contact' exact component={ContactForm} />
<Route path='/user-profile' exact component={UserAccount} />
<Redirect to='/' />
</>
);
};
export default Routes;
我不明白为什么它说你不应该在<Router>之外使用<Link>,因为包含<link>(MainNavigation.js)的组件在<Router>内部标签。
【问题讨论】:
-
我现在不能测试,因为我在工作,但
不应该也来自 react-router-dom吗?就像在文档中一样 reactrouter.com/web/guides/quick-start/… -
另外,还有一个关于使用 redux 历史的指南,最后还有一个专门的库。可能需要研究一下
-
@JulienRipet 我也想过,但似乎这是另一回事。如果您想使用自定义历史对象,您应该使用本文档reactrouter.com/web/api/Router 中提到的路由器。谢谢你,我会查看指南。
标签: javascript reactjs react-hooks react-router