以下内容似乎是控制台错误消息的原因,并且还不时地挂起我的应用程序,使其成为现在不可取消的。
如何重现行为
假设我们有一个容器组件CatContainer,如果属性cat存在于该状态,它将呈现其子项。状态中的“猫”是cats = { snowy: { height: 5, width: 10, weight: 50 }, muschi: { height: 1, width: 12, weight: 20 } }
之类的对象。
对于cats对象中的每只猫,CatContainer呈现Cat组件,传递Cat的名称。
Cat组件连接到状态并将特定的cat从cat状态对象中拉出。
如果我现在从猫状态中移除一只猫,那么Cat-Component仍会从顶部接收cat-name,但该状态中的cat不再存在,从而产生异常。
我期望发生的事情是CatContainer以自上而下的方式确定性地呈现在Cat组件之前。
然而,这似乎没有发生,导致某些未定义的行为。
我尝试过的可能解决方案
muschi in cats
”。这有效,但这意味着我需要重写应用程序的大部分内容,我不惜一切代价避免这些内容。我搜索了这个问题,发现了以下内容:
这两个链接都没有提出直接的解决方案,我相信,这个问题与每个使用react-redux的人都更加相关。
对于任何磕磕绊绊的人,我有以下管道胶带解决方案,我真的不想实现。
shouldComponentUpdate()
函数中呈现,直到nestingLevel === renderedNestingLevel-1
。祝你好运