如何强制对象更新react-native

时间:2016-01-18 20:45:31

标签: react-native

我有一个基于有状态变量构造的变量,但它本身并不存储在状态中,并且当底层数据发生变化时它不能正确地重新呈现。当底层状态变量发生变化时,有没有办法强制这个对象完全重新渲染?

编辑:不幸的是我无法发布整个代码示例(很抱歉在没有看到整个上下文的情况下提出问题)但是这里有更多。 expr是用户可以通过点击按钮添加到的数组,然后基于另一个组件将数组渲染到屏幕。我要做的是让每个圆圈基本上按照数组中圆圈的比例缩小。这部分地起作用,边缘圆是按比例缩小的尺寸,但较早的尺寸不重新渲染。我能够以一种非常迂回的方式强制退回,这给了我预期的行为,但它引起了一些其他问题。

这是上下文的一些代码(同样这不是全部,但我希望可能有助于确定问题。

circles

谢谢

2 个答案:

答案 0 :(得分:2)

您当前的实施是一种缓存方法。即,当您的状态发生变化时,变量圆将不会自动重新计算。

因此您可能希望将圆圈更改为函数:

var getCircles = function() {
    return this.state.keys.map((key, idx) => {
       // ....
    })
}

然后在render()

中使用getCircles()

答案 1 :(得分:1)

反应组件总是在状态或道具更新上重新呈现,除非您明确告诉它不要在shouldComponentUpdate()中。在没有看到代码的情况下,我认为你不在render方法中计算派生变量。在这种情况下,您必须选择:

  1. 将派生变量的计算移动到render()
  2. 使用componentWillUpdate()或componentWillReceiveProps()方法在事情发生变化时重新计算。