Redux状态的一部分会重新渲染(不必要的)整个React组件

时间:2019-01-23 16:44:25

标签: reactjs redux rendering

我的redux状态部件(减速器)之一是filters减速器,用于存储每页的过滤器设置。它是关键对象结构,因此看起来像这样:

{
   dashboard: {
     minDate: '2017-01-01',
     maxDate: '2019-01-01',
     //... other filters
   },
   otherPageKey: {
     //... other filters
   }
}

我的仪表板页面很大,但其中包含select,该值是从减速器filters.dashboard.minDate中读取的。负责连接的代码:

function mapStateToProps({
  filters
}) {
  return {
    filters: filters.dashboard
  };
}

现在-每当我们从该选择组件中选择新日期时,整个filters树都将更改,因此整个仪表板组件都将被重新呈现。 我怎么解决这个问题?预期结果是,只有select组件(其属性已由用户更改)才应重新呈现。

1 个答案:

答案 0 :(得分:0)

更多代码会有所帮助,但这通常是由父组件(在本例中为仪表板)检测到的状态或道具引起的。

这可能是由几件事引起的。

  • 您正在映射到父组件,而不是特定的子组件。这意味着父组件正在检测更改,因此正在重新呈现。您的Sub RemoveQuestionTopic() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "\(\bTopic \d+\b\)" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = True .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub 是在仪表板组件中,而不是在所选组件中?
  • 不当使用mapStateToPropsconnect。查看this post了解更多信息。

同样,更多代码会有所帮助,但我希望这会有所帮助。