Reactjs 如何清理React和Redux中的脏状态?

Reactjs 如何清理React和Redux中的脏状态?,reactjs,redux,Reactjs,Redux,我要面对这个问题好几个星期了。 我之前问过,我发现这个问题与肮脏状态有关 基本上,我创建了一个包含文章列表的页面,当你点击其中一篇文章时,你就会看到一篇文章。我正在使用componentDidMount为文章和一篇文章发出AJAX GET请求(您可以在中看到这段代码) 我没问就想找到一个解决办法,但我做不到。我猜我必须在ArticlePage中添加componentWillUnmount方法来清除上一页的脏状态。 这是我为列表和每篇文章获取文章的操作 export function fetchA

我要面对这个问题好几个星期了。
我之前问过,我发现这个问题与肮脏状态有关

基本上,我创建了一个包含文章列表的页面,当你点击其中一篇文章时,你就会看到一篇文章。我正在使用componentDidMount为文章和一篇文章发出AJAX GET请求(您可以在中看到这段代码)

我没问就想找到一个解决办法,但我做不到。我猜我必须在ArticlePage中添加componentWillUnmount方法来清除上一页的脏状态。
这是我为列表和每篇文章获取文章的操作

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;
    default:
         return state;
   }
 }

如何清理脏状态?

您的减速器应如下所示:

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
trigger
RESET\u ARTICLE
action中添加
RESET\u ARTICLE
action?是什么阻止了你?@azium它不起作用。@Dan那么你是否已在
组件WillUnmount上调度了该操作?
该操作是否已调度?如果没有,那么您没有正确地卸载组件。@skay-是的,我卸载了,如果我在Redux开发工具中查看Diff,状态实际上会更改为[]。但是,我仍然无法返回到上一页。@Dan您不能返回到上一页状态是什么意思?改变路线是另一回事。我从你的问题中得到的印象是,你只是想重置“状态不更改”页面。@skay-哦,对不起。你是对的。我只是问我如何在这里重置状态。我把我问的另一个问题也包括在内。我要接受这个答案。很抱歉。