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>
);
}
}
我正在为我的项目使用 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>
);
}
}