重新选择 - 如何找出哪个参数发生了变化?

asl*_*ski 5 javascript reactjs redux react-redux reselect

选择器是高效的。除非选择器的参数之一发生更改,否则不会重新计算选择器。

我正在尝试调试一个比预期更频繁地调用的选择器。有没有办法记录为什么重新计算特定选择器(即哪个参数发生了变化)?

例子:

export const totalSelector = createSelector(
  [subtotalSelector, taxSelector]
  (subtotal, tax) => ({ total: someExpensiveCalculation(subtotal, tax) })
)
Run Code Online (Sandbox Code Playgroud)

现在假设 的返回值totalSelector作为resultprop 通过提供给某个组件mapStateToPropswhy-did-you-render报告由于更改 的引用(而不是值)而导致不必要的渲染result。因此我知道totalSelector必须重新计算,并且我们从文档中知道它仅在其输入发生变化时(subtotaltax在示例中)发生。我如何判断是否触发了subtotal更改或tax两者都触发了?

为了便于解释,我们假设 和subtotal都是tax对象,因此它们是通过引用传递的。

Kip*_*ipr 0

在我的情况下对我有帮助的一件事是在这一行放置一个断点,以便您可以清楚地看到导致重新计算的参数。