2016-09-07 2 views
-1

私は数週間この問題に直面しています。
私は前にanother questionと尋ねました。この問題は汚れた状態と関係していることがわかりました。ReactとReduxで汚れた状態をクリーンアップする方法はありますか?

基本的には、記事のリストを含むページを作成しましたが、そのうちの1つをクリックすると記事が表示されます。私は記事と記事の両方でcomponentDidMountでAJAX GETリクエストを作成しています(このコードはhereにあります)。

私はここで尋ねることなく解決策を見つけようとしましたが、できませんでした。私はArticlePageでcomponentWillUnmountメソッドを追加して前のページから自分の汚れた状態をクリーンアップする必要があると思います。
これは、リストと各記事の記事を取得する私のアクションです。どのように私はクリーンアップダーティ状態

export default function(state=[], action){ 
    switch (action.type) { 
     case FETCH_ARTICLES: 
     return action.payload; 
     case FETCH_ARTICLE: 
     return action.payload; 
    default: 
     return state; 
    } 
} 

export function fetchArticles(){ 
    return (dispatch) => { 
     axios.get('/api/articles').then(({data}) => { 
     dispatch({ 
      type: FETCH_ARTICLES, 
      payload: data 
     }) 
     }) 
    } 
} 
export function fetchArticle(id){ 
    return (dispatch) => { 
     axios.get(`/api/articles/${id}`).then(({data}) => { 
      dispatch({ 
      type: FETCH_ARTICLE, 
      payload: data 
      }) 
     }) 
    } 
} 

は、これが私の減速のですか?

export default function(state=[], action){ 
    switch (action.type) { 
     case FETCH_ARTICLES: 
     return action.payload; 
     case FETCH_ARTICLE: 
     return action.payload; 
     case RESET_ARTICLE: 
     return []; // return an empty state here. 
    default: 
     return state; 
    } 
} 

componentWillUnmountトリガーRESET_ARTICLEアクションであなたのコンポーネントで:

+0

したがって、 'RESET_ARTICLE'アクションを追加しますか?あなたを止めるのは何ですか? – azium

+0

@azium動作しませんでした。 – Dan

答えて

1

あなたの減速は、次のようになります。

+0

私はこれを前に試しましたが、うまくいかなかったのです。 – Dan

+0

@Danしたがって、あなたは '' componentWillUnmount? ''にアクションをディスパッチしましたか? ''そのアクションはディスパッチされていますか?そうでなければ、コンポーネントを正しくアンマウントしていません。 –

+0

@ skay-そうですね、私のRedux DevToolsでDiffを見た場合、状態は実際に[]に変わります。しかし、私はまだ前のページに戻ることはできません。 – Dan

関連する問題