2017-04-11 41 views
0

實施例,如果應用程序狀態是對於React/Redux,如果用戶只需點擊鼠標就能看到使用React Router的不同組件/容器,那麼應​​用狀態如何改變?

const rootReducer = combineReducers({ 
    allPosts: PostsReducer, 
    post: PostReducer 
}); 

當用戶點擊在所有帖子(索引)的列表中的一個後,看一個柱(用PostsShow容器),然後在用戶點擊「返回索引」,然後點擊不同的帖子,現在想象一下,如果網絡速度太慢或卡住,用戶會真正看到上一篇文章,因爲state.post從未改變過,在AJAX可以獲取數據之前。

實際上,所有用戶的操作都是由<Link to="..." />通過react-router完成的。當用戶點擊單個帖子頁面中的「返回索引」(使用單個帖子容器)時,是否有將state.post設置回null的方法,或者是否有任何其他方法可以實現不顯示上一篇文章?

+0

你試過componentWillUnmount? –

+0

它是在'componentWillUnmount()'裏面調用一個動作創建器嗎?所以我們需要一個新的動作,比如'CLEAR_POST'?所以,我們甚至可以這樣想:每當我們需要改變應用程序狀態時,想一想由動作創建者創建的動作,以及想到動作創建者可以被調用的位置。 –

回答

0

可能有點愚蠢,但:

render(){ 
    return(
    this.props.params.post_id != this.props.post.id ? <LoadingMessage /> : <PostPage /> 
)} 
+0

我想到了這種方法...但是如果用戶自己或其他用戶修改或刪除帖子,然後...與網絡錯誤,該方法將顯示舊內容,就好像該帖子是這樣的(而不是新版本)。我認爲這個應用可能會更好,只是爲了顯示「加載...」而不是顯示錯誤的數據。請參閱...(1)如果網絡正常,則在0或2秒後顯示正確的數據,顯示錯誤的數據後(2)如果網絡關閉或速​​度慢,則顯示錯誤的數據並停止,或顯示錯誤的數據前7秒,然後顯示正確的數據...我寧願(2)不會發生 –

相關問題