<Redirect />
- это компонент, который должен возвращаться функцией render
, а не обработчиком события.Если вы хотите использовать компонент Redirect
, вы должны установить состояние при успешном вызове API и визуализировать компонент на основе этого состояния.
state = {
formSuccess: false
}
handleSubmit(event) {
/* Call to api was successful */
this.setState({ formSuccess: true });
}
render() {
if (this.state.formSuccess) {
return (<Redirect to="/test" />);
}
/* The rest of your render function */
}
Если вы не хотите использовать Redirect
компонента и просто хотите перенаправить, вы должны иметь доступ к истории вашего Router
компонента.Вы делаете это, оборачивая свой компонент, который имеет функцию handleSubmit
, в withRouter
HOC, чтобы дать ему доступ к истории.
import { withRouter } from "react-router";
class MyAwesomeFormComponent {
handleSubmit() {
/* Call to api was successful */
this.props.history.push("/test");
}
}
export default withRouter(MyAwesomeFormComponent);