我们在应用程序中使用作出反应,终极版。问题是我们想要根据浏览器按钮的用户导航来撤消和重做Redux状态。假设用户在页面A中,并且用户浏览其他页面的几个,然后他导航到页面A,例如。现在,如果用户在浏览器中按下后退按钮时,他会回到页面A,但在这里,我们希望有状态的前一个实例的应用程序必须在用户页面A.处理浏览器历史记录与之反应,终极版
有没有办法解决这个集中式方法问题不需要手动处理状态操作。
我们在应用程序中使用作出反应,终极版。问题是我们想要根据浏览器按钮的用户导航来撤消和重做Redux状态。假设用户在页面A中,并且用户浏览其他页面的几个,然后他导航到页面A,例如。现在,如果用户在浏览器中按下后退按钮时,他会回到页面A,但在这里,我们希望有状态的前一个实例的应用程序必须在用户页面A.处理浏览器历史记录与之反应,终极版
有没有办法解决这个集中式方法问题不需要手动处理状态操作。
你所想要实现作出反应,终极版的默认行为。如果你是不是要派一些行动,操纵特定组件的状态,路由变化时,就应该坚持其老态,没有任何附加功能。
所以我的猜测是,当新的路线加载组件,您都派遣了一些行动。如何才能用这个来处理(例如,不获取从静止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))
}
}
那么这是什么做的是,它不会通过一旦路由改变(如果它已经存在),一个新的数据导入到组件中,所以旧的数据/状态停留在那里。您可以更多地抽象这个函数,使其可以轻松地重用于所有其他组件。