私は現在、redux、react-router(pushState Historyを使用)とreact-router-reduxを使用して反応するアプリケーションを開発中です。私は現在やっていることは、私はすべてのドキュメントのようなベストプラクティスを見たように私は、特定のコンポーネントに私のルートを結合していますということです。そして、react-router/react-router-reduxを使用して特定のreduxアクションを1つのルートにバインドします。
export default function (store) {
return <Route path='/' component={CoreLayout}>
<Route path="feed" components={{content: Feed}} />
<Route path="f/:id" components={{content: FeedItem}} />
</Route>
}
私が持っているようなリンクコンポーネントである私のフィードコンポーネント、のどこかに以下の
<Link to={{ pathname: '/f/' + item.id + '-' + urlSlug(item.title) }}>{item.title}</Link>
リンクは/ f/123のようになります。コンポーネント123にナビゲートしているリンクをクリックすると、コンポーネントFeedItemがロードされます。これまでのところすべて正常に動作しています。私はまた、mapstatetopropsに接続された私のフィードアイテムのための特定の還元剤を持っています。私はこれがすべて正しく行われたと思います。
しかし、私の問題や質問は現在以下の通りです:
私は「SHOW_FEED_ITEM」のように呼ばれる作用を有します。このアクションは、ユーザーがurl/f/123に直接ナビゲートしている場合に使用する必要がありますが、理想的にはLinkコンポーネントをクリックしても理想的です。
ルータが実際に行っていることは、@@ router/LOCATION_CHANGEアクションを実行していることです。私の減速機の中から、私はこのアクションを処理して自分自身のアクションをディスパッチすることができますが、私はそれらのルートすべてに対して適切なアクションにリダイレクトするためにそこから2回目にルーティングURLを解析しなければならないので、
私が今やっていることは、mapStateToProps関数のprops.id(Route f /:idから来ている)を受け取り、それを自分のコンポーネントに渡すことです。これは、私のコンポーネントが正しいIDを提示する方法です。
は今
が、また、それだけではなく、それがロードする必要がありますどのコンポーネント(複数可)を彼に伝えるの処理すべきアクションルータに指示するほうがよいのではないでしょう...私の実際の質問に来ますか?
私は自分のアクションをディスパッチするリンクにonClickハンドラを追加することができますが、これはリンクのクリック、ブラウザの前/後、またはユーザアクションの更新にのみ影響します。
これはすでに現在でも可能でしょうか? あなたはどうやってそれを処理しますか?
フォーカス取得時の機能は現在機能していません。他の提案はありますか? –