達成しようとしているのは、React-Reduxのデフォルトの動作です。特定のコンポーネントの状態を操作するアクションをディスパッチしようとしていない場合は、ルートが変更されたときに、追加機能なしで古い状態を維持する必要があります。
私は、新しいルートがコンポーネントを読み込んだときにいくつかのアクションをディスパッチしていると思います。それは、この(それが最終的にコンポーネントを操作させている、存在していたら、例えば残りのAPIからリソースを取得するためにではない)ここで扱うことができる方法:https://github.com/reactjs/redux/blob/master/examples/async/src/actions/index.js#L35
const shouldFetchPosts = (state, reddit) => {
const posts = state.postsByReddit[reddit]
if (!posts) {
return true
}
if (posts.isFetching) {
return false
}
return posts.didInvalidate
}
export const fetchPostsIfNeeded = reddit => (dispatch, getState) => {
if (shouldFetchPosts(getState(), reddit)) {
return dispatch(fetchPosts(reddit))
}
}
それでは、これがやっていることは、それが通過していないということです以前のデータ/状態がそこに残るように、既に存在する場合には、一度経路変更されたコンポーネントへの新しいデータが変更されます。この機能をさらに抽象化して、他のすべてのコンポーネントで簡単に再利用できるようにすることができます。