在代码沙箱内路由,由于 withRouter 而失败

IT技术 javascript html css reactjs redux
2021-05-26 04:13:27

当我点击提交按钮时,我需要重定向到这个页面 pageOne,所以我用谷歌搜索并找到了一个react-router并使用了这一行this.props.history.push("/anotherPage");,但它没有重定向。它抛出一个错误 Invariant failed: You should not use <Route> outside a <Router> Can you tell me how to fix it. 在下面提供我的代码片段和沙箱。

https://codesandbox.io/s/material-demo-n9o7s

<!-- language-all: lang-or-tag-here -->

anotherPage = () => {
  console.log("redictToStepper --->");
  this.props.history.push("/anotherPage");
};

render() {
  const { classes } = this.props;
  const { checkBoxvalues } = this.state;

  return (
    <div className={classes.root}>increase when I hit submit button</div>
  );
}

export default withRouter(withStyles(styles)(RadioButtonsGroup));
1个回答

您需要使用 包装最外部的组件BrowserRouter,以便为它的子组件提供所需的props和行为。

在您index.js将渲染替换为:


import { BrowserRouter } from "react-router-dom";

ReactDOM.render(
  <BrowserRouter>
    <Route exact path="/" component={Demo} />
    <Route exact path="/anotherPage" component={PageOne} />
  </BrowserRouter>, document.querySelector('#root'));

要在每个路由中渲染您的组件,请参阅react 路由器文档