根据this回答,react redux shallow比较cell.cellClicked = { (name, value) in
}
的输出,以确定是否需要重新渲染组件。
我有一个组件,即使相关状态发生变化,也不会重新渲染。
我将断点附加到react redux源代码中的shallowEqual函数,但发现函数实际上返回false(即在我的组件不相等的情况下比较的对象)。理想情况下我的组件应该重新渲染。因此,我无法弄清楚为什么我的组件没有重新渲染。我猜这是因为mapStateToProps
函数中的性能优化。
有没有办法打印在connect函数中进行的有关重新渲染组件的检查的输出
答案 0 :(得分:3)
如果您想确认反应还原优化是否会妨碍,可以使用connect
功能的options
argument将其关闭。 e.g。
export default connect(mapStateToProps, mapDispatchToProps, undefined, { pure: false })(YourComponent)
这将绕过所有等式检查,并允许YourComponent
在每个状态或支柱更改上重新呈现。如果它仍未重新渲染您的组件,则问题出在其他地方。
请记住在提交更改之前删除该选项(除非实际需要)。
答案 1 :(得分:0)
还有另一个方面需要考虑:对帐。您的组件可能会更新,但可能 Reactjs会发现组件的private static ReadOnlyDictionary<string, byte> _validRevisions;
static FooClass()
{
IDictionary<string, byte> dict = new Dictionary<string, byte>() {
{ "1.0", 0x00 },
{ "1.1", 0x01 },
{ "1.2", 0x02 },
{ "1.3", 0x03 }
};
_validRevisions = new ReadOnlyDictionary<string, byte>(dict);
}
,并自己比较shouldComponentUpdate(nextProps, nextState)
和this.props
并了解情况。