2

私はログインフォームを持っています。ログインをクリックすると、URLは更新されますが、コンポーネントはありません。 (たとえば、ローカルホスト:8080 /どこかにまだログインページ)React Router v4コンポーネントがボタン提出でロードされていません

次のように私のパッケージのバージョンは以下のとおりです。

  • は反応 - 15.4.2
  • が反応し、ルータを&が反応-ルータ-DOMを - 4.1.1
  • Reduxのフォーム - 6.6.1

このログイン・コンポーネント

であります

私は共有履歴オブジェクトを持っているので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も試しましたが、これはルートに宣言されていないコンポーネントにのみ適用されることがわかりました。

コンポーネントをフォームに送信するにはどうすればよいですか?

答えて

0

私は、これは、これを行うための最善の方法であることをわからないんだけど、それは私の作品:

<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> 
    {this.props.user.loggedIn && <Redirect to={'/Somewhere'} />} 
</form> 

this.props.handleSubmit(this.handleFormSubmit)userの真loggedIn小道具に切り替わりアクションをディスパッチするという事実を考えます。

user.loggedInが変更されたときにコンポーネントを再レンダリングするには、userをpropsにマップする必要があります。 <Redirect>が有効になります。

+0

mapStateToPropsにプロップをマップしていないことがわかりました。どうもありがとうございます! – Reactor

関連する問題