react-router 无法跳转到页面

react-router can't jump to the page

我正在为我的项目使用 react-router-dom,但我是新手。我有一个关于页面跳转的问题,这是我的代码 App.js:

 class App extends Component {
  render() {
    return (
      <div className="App">
        <Switch>
          <Route
            path="/userrestaurant"
            render={props => <UserRestaurant {...props} />}
          />
          <Route path="/userrestaurant/edit/:id" component={EditRestaurant} />
        </Switch>
      </div>
    );
  }
}

export default App;

这是 UserRestaurant 组件的代码:

 export default class UserRestaurant extends Component {
  edit = () => {
    var restId = 4;
    this.props.history.push(`/userrestaurant/edit/${restId}`);
  };

  render() {
    return (
      <div>
        <Button onClick={this.edit}>Edit</Button>
      </div>
    );
  }
}

如果我点击编辑按钮,它应该会跳转到 EditRestaurant 组件,因为我已经在 App.js 中定义了路线。但是当我点击按钮时,只有 url 改变,页面停留在 UserRestaurant 组件中。

A <Route/> 对 URL 进行部分匹配,除非您添加 exact 属性。换句话说,/userrestaurant/edit/blah 仍然匹配 Switch 的第一个 case,所以 UserRestaurant 仍然被渲染。添加 exact 以便第一个仍然不匹配第二个 URL 或重新排序您的路线,以便更具体的路线排在第一位。

class App extends Component {
  render() {
    return (
      <div className="App">
        <Switch>
          <Route
            path="/userrestaurant"
            exact
            component={UserRestaurant}
          />
          <Route 
            path="/userrestaurant/edit/:id" 
            component={EditRestaurant} />
        </Switch>
      </div>
    );
  }
}