由于某种原因,我们的项目正在didRender
函数中设置组件的props,这将触发另一个基于Ember组件生命周期的重新渲染。但这并没有陷入无限循环,除非先前的prop和new prop都是空数组。我可以知道为什么吗?灰烬如何决定何时在引擎盖下重新渲染组件?
someComponent.hbs
{{someComponent
someProps=DS.attr() // THIS IS AN ARRAY
}}
someComponent.js
didRender() {
const newProps = ['newValue'];
this.set('someProps', newProps)
}
因此,当render -> didRender -> updateProps -> rerender -> didRender -> stop
的先前值或当前值都不为空时,以上示例将作为例外(someProps
使用。但是,someProps
的先前值和当前值都为空数组时,将发生无限循环。
任何建议将不胜感激!谢谢!