我正在构建一个 Reactjs 应用程序。我不明白为什么这样做是错误的并导致我出现此错误:
Error: Invariant failed: You should not use <Redirect> outside a <Router>
这是代码:
index.js 中的一个简单路由器
ReactDOM.render(
<Router>
<Switch>
<Route exact path="/" component={(props) => <AppContainer><HomePage {...props}/></AppContainer>}/>
<Route exact path="/register" component={(props) => <AppContainer><RegisterPage1 {...props}/></AppContainer>}/>
</Switch>
</Router>, document.getElementById('root')
);
AppContainer 只是一个带有 id 的简单 div:
export default function AppContainer({children}) {
return (
<div id="appContainer">{children}</div>
);
}
在 RegisterPage1 内部,我在一些过程后触发了“appContainer”上的渲染。这应该在路由器内呈现一个新组件。
ReactDOM.render(<RegisterPage2 data={res}/>, document.getElementById('appContainer'));
在 RegisterPage2 中,我正在使用并收到上述错误。
if (redirectHome) return (<Redirect to={"/"}/>)
else {
return (
//RegisterPage2Components
)
}
由于我在路由器内部渲染,我不明白为什么我可以在 RegisterPage1 中使用重定向而不能在 RegisterPage2 中使用。我检查了 RegisterPage2,路由器仍然在这里(通过在路由器和交换机之间添加一些随机文本)。如果这样渲染是错误的,那么不添加新路由的正确方法是什么?
代码沙盒: https://codesandbox.io/s/autumn-leftpad-7s5sy? file=/src/index.js
Smart猫小萌
烙印99
相关分类