如何在每次 React 组件开始渲染时重置 Redux 状态

时间:2021-05-06 20:20:26

标签: javascript reactjs redux react-redux react-router

我在 redux 中有一个状态,它告诉我页面上呈现的当前帖子数

看起来像这样

{
  postReducer:{
    ...state,
    loaded:0,
    
  }
}

当我在它们之间切换时,我有多个组件应该使用这种状态。

示例: 我在主页上我关注的人的所有帖子都在那里状态看起来像这样

{
  postReducer:{
    ...state,
    loaded:15,
    posts: [],
    profilePosts: [],
    
  }
}

当我从家里转到我的个人资料或任何其他人的个人资料时,我只想看到他们的帖子 但是为了开始获取他们的帖子,loaded 状态必须为 0 但它是相同的 15

我希望每次访问新组件时加载的值为 0 并在我在同一组件上时保持其值

我正在使用 react-router-dom 在页面之间切换

我尝试在 useEffect 中重置它,但第一批帖子是仅加载的帖子

1 个答案:

答案 0 :(得分:1)

我不确定,useEffect 有什么问题。 我相信你可以通过两种方式做到这一点:


加载组件后,您可以将 0 设置为已加载的帖子数:

const dispatch = useDispatch();
useEffect(() => {dispatch(cleanupPostsNumberAction)}, []);

一旦您的组件卸载(当您从一个页面移动到另一个页面时),您可以使用清理功能将 loaded 设置为 0

const dispatch = useDispatch();
useEffect(() => () => {dispatch(cleanupPostsNumberAction)}, []);

因此,如果此答案不完整,您可以提供有关您遇到的问题的更多背景信息