React Router 渲染错误组件
2021-06-30
342
我正在使用 HashRouter 呈现不同的页面。我遇到的问题是,当我访问
/service/app/sort 时,它呈现
<MainPage />
,而我期望它呈现
<ChildPage />
。
这与我的路由器类似
<HashRouter>
<Switch>
<Route path="/service/app">
<MainPage />
</Route>
<Route path="/service/app/sort">
<ChildPage />
</Route>
</Switch>
</HashRouter>
可能有帮助的其他信息:
在我的
<MainPage />
上,我有一个按钮来重定向 onClick
const history = useHistory();
const handleSortClick = () => {
console.log('click me')
let path = "/service/app/sort";
history.push(path);
};
当我单击它一次时,我得到了“单击我”console.log,并且链接更改为 /service/app/sort,但它仍然是
<MainPage />
。如果我再次单击它,我会收到警告
“警告:哈希历史记录无法推送相同的路径;新条目将不会添加到历史记录堆栈中”
1个回答
您可能面临此问题,因为 URL 的开头被 react-router-dom 解释为真,并且无论如何都允许您访问
/service/app
。
例如,
/service/app
路由不仅会检测此路由,还会检测
/service/app/1
或
/service/app1
,因为它在路径中有
/service/app
。
为了防止这种情况,您需要将
exact
属性传递给路由,这样 react-router 就会明白您需要精确访问此路由才能呈现该组件。
<Route path="/service/app" exact={true}>
<MainPage />
</Route>
josepholiveira
2021-06-30