以下是我的
App.js
和Contact.js
文件-
App.js
import React, { Component } from 'react';
import { BrowserRouter as Router, Switch, Route, Link, Redirect } from 'react-router-dom';
import Contact from './Contact';
class App extends Component {
state = {
redirect: false
}
setRedirect = () => {
this.setState({
redirect: true
})
}
renderRedirect = () => {
if (this.state.redirect) {
return <Redirect to='/contact' />
}
}
render() {
return (
<Router>
<Switch>
<Route exact path='/contact' component={Contact} />
</Switch>
<div>
{this.renderRedirect()}
<button onClick={this.setRedirect}>Redirect</button>
</div>
</Router>
)
}
}
export default App;
Contact.js
import React, { Component } from 'react';
class Contact extends Component {
render() {
return (
<div>
<h2>Contact Me</h2>
<input type="text"></input>
</div>
);
}
}
export default Contact;
对我来说,使用状态并不是必需的,因此其他(最好更简单的)重定向方法也会受到欢迎。
this.props.history.push()
时, React会给我一个错误,说"TypeError: Cannot read property 'push' of undefined". 当我尝试导入browserHistory
时,它会显示 "Attempted import error: 'browserHistory' is not exported from 'react-router'." - Debadeep Senimport {withRouter} from react-router-dom
使用withRouter高阶组件,您可以访问history对象的属性和最接近的Route的匹配。每当渲染时,withRouter将传递更新后的match,location和history props到包装的组件中。 - IAMSTR