У меня есть форма входа, и когда я нажимаю кнопку входа, URL-адрес обновляется, а компонент - нет. (например, localhost: 8080 / где-то, но все еще на странице входа)
Версии моих пакетов следующие:
- реагировать - 15.4.2
- реагировать-маршрутизатор и реагировать-маршрутизатор-дом - 4.1.1
- редукс-форма - 6.6.1
Это компонент входа в систему
class Login extends React.Component {
handleFormSubmit = ( values ) => {
this.props.signInUser(values);
history.push('/somewhere');
};
<div>
<div>
<h2>Log In</h2>
<form onSubmit={ this.props.handleSubmit( this.handleFormSubmit ) }>
<Field name="email" type="text" label="Email"/>
<Field name="password" type="password" label="Password"/>
<button action="submit">Sign In</button>
</form>
</div>
</div>
...
}
export default connect( mapStateToProps, Actions, )( reduxForm({
form: 'login',
validate,})( Login ));
Я использую history.push, потому что у меня есть общий объект истории.
Мои маршруты следующие:
<Provider store={ store }>
<Router history={history}>
< App >
<Switch>
<Route exact path="/" component={ Home }/>
<Route path="/login" component={ Login } />
<Route path="/somewhere" component={ Somewhere } />
</Switch>
</ App >
</Router>
</Provider>
Я пробовал использовать <Redirect>
, но не могу заставить его работать. Также пытался использовать withRouter
, но обнаружил, что это применимо только для компонентов, не объявленных в маршрутах.
Как мне перенаправить на компонент Где-то при отправке формы?