【发布时间】:2020-04-10 02:00:07
【问题描述】:
选择器是有效的。除非其中一个参数发生变化,否则不会重新计算选择器。
我正在尝试调试比预期更频繁地调用的选择器。有没有办法记录重新计算特定选择器的原因(即更改了哪个参数)?
例子:
export const totalSelector = createSelector(
[subtotalSelector, taxSelector]
(subtotal, tax) => ({ total: someExpensiveCalculation(subtotal, tax) })
)
现在假设totalSelector 的返回值作为result 属性通过mapStateToProps 提供给某个组件。 why-did-you-render 报告由于 result 的引用(而非值)更改而导致不必要的渲染。因此,我知道totalSelector 必须已重新计算,并且我们从文档中知道它仅在其输入更改时发生(示例中为subtotal 或tax)。我如何判断是subtotal 触发了更改还是tax 或两者兼而有之?
为了便于解释,我们假设 subtotal 和 tax 都是对象,因此它们是通过引用传递的。
【问题讨论】:
-
您需要添加更多细节,例如你的选择器代码和模型。
-
@BenSmith 示例并提供进一步解释
标签: javascript reactjs redux react-redux reselect