使用Redux时,这是一个范式转换,但您不希望任何函数成为您的状态。所以,该初始状态应该实际上只是null
或者一个空对象(取决于接收这些道具的组件的设计)。但要更直接地回答你的问题,如果你想确保数据保持“新鲜”,你需要做到这一点。 Redux中没有魔法,这是一件好事。
但是,如果您正确设计代码,用户不应该体验类似整页刷新的问题。在高层次上,我可以设计你所描述的内容。
请求和接收微博,即写操作:
export function requestTweets() => {
return {
type: REQUEST_TWEETS
}
}
export function receiveTweets(tweets) => {
return {
type: RECEIVE_TWEETS,
payload: tweets
}
}
然后包装,既可地方重复使用“公共”的功能:
export const fetchTweets =() => {
return (dispatch, getState) => {
dispatch(requestTweets())
//network code here is pseudocode
fetch('https://tweeter/api/v1/tweets')
.then(data => dispatch(receiveTweets(data))
.catch(err => displayErrorMsg(err))
}
}
然后在动作处理程序只是减少推文进入下一个状态。
现在使用fetchTweets,您可以在发布后或间隔期间在第一次加载时调用它。好的是React会为你处理差异,而不是重新渲染整个页面。这完全取决于你的设计,因此用户会注意到新推文的来历时间和地点。
希望有所帮助!