我有一个基于有状态变量构造的变量,但它本身并不存储在状态中,并且当底层数据发生变化时它不能正确地重新呈现。当底层状态变量发生变化时,有没有办法强制这个对象完全重新渲染?
编辑:不幸的是我无法发布整个代码示例(很抱歉在没有看到整个上下文的情况下提出问题)但是这里有更多。 expr
是用户可以通过点击按钮添加到的数组,然后基于另一个组件将数组渲染到屏幕。我要做的是让每个圆圈基本上按照数组中圆圈的比例缩小。这部分地起作用,边缘圆是按比例缩小的尺寸,但较早的尺寸不重新渲染。我能够以一种非常迂回的方式强制退回,这给了我预期的行为,但它引起了一些其他问题。
这是上下文的一些代码(同样这不是全部,但我希望可能有助于确定问题。
circles
谢谢
答案 0 :(得分:2)
您当前的实施是一种缓存方法。即,当您的状态发生变化时,变量圆将不会自动重新计算。
因此您可能希望将圆圈更改为函数:
var getCircles = function() {
return this.state.keys.map((key, idx) => {
// ....
})
}
然后在render()
中使用getCircles()答案 1 :(得分:1)
反应组件总是在状态或道具更新上重新呈现,除非您明确告诉它不要在shouldComponentUpdate()中。在没有看到代码的情况下,我认为你不在render方法中计算派生变量。在这种情况下,您必须选择: