度量内的局部变量值

错误

我有一个带有嵌套项目的视图,实现了显示接收到的 props 数组的类似列表的块,我想从所有子项的高度总和中获取该块的高度。所以我的组件看起来像这样:

class MultiColumnBox extends Component {
  state = {
    calculatedMaxHeight: null,
  };

  measureBlock = () => {
    let totalHeight = 0;

    //this.props.data is array
    this.props.data.forEach((item, index) => {
      this['checkbox_${index}'].measure((x , y, width, height) => {
        console.log(height)
        totalHeight += height;
      })
      if (index === (this.props.data.length - 1)) {
        this.setState({
          calculatedMaxHeight: totalHeight
        })
      }
    })
  };

  render() {
    return (
      <View
        onLayout={() => this.measureBlock()}
      >
        {this.props.data.map((item, index) => (
          <View ref={node => this[`checkbox_${index}`] = node}>
            // some content....
          </View>
        )}
      </View>
    )
  }
}

但是如果有例如 5 个高度为 40dp 的块,它将控制台日志 40 5 次并将 state.calculatedMaxHeight 设置为 0。但是如果我if (index === (this.props.data.length - 1))在测量函数中移动条件,它会正常工作并将 state.calculatedMaxHeight 设置为 200。为什么它是这样工作的吗?无论在测量函数内部嵌套如何,我都使用相同的index变量并增加相同的totalHeight变量,在循环外定义一次。

穆罕默德·阿什法克

我认为问题在于 setState 函数在为第一个节点调用的度量内部的回调函数之前被调用。

console.log(height)将打印 40 5 次,但在第一次打印高度值之前,calculatedMaxHeightt 被设置为 0。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++ Lambda捕获弄乱了局部变量值

来自分类Dev

使用AspectJ记录局部变量值

来自分类Dev

在C#中使局部变量值成为全局变量

来自分类Dev

如何通过参数在方法中调用局部变量值?

来自分类Dev

为什么更改局部变量值会影响全局副本

来自分类Dev

显示/隐藏子元素的Angular2局部变量值

来自分类Dev

在Groovy Shell执行期间发出局部变量值

来自分类Dev

pthread_join之后的局部变量值不正确

来自分类Dev

使用局部变量值作为查询条件SQL Server

来自分类Dev

为什么更改局部变量值会影响全局副本

来自分类Dev

显示/隐藏子元素的Angular2局部变量值

来自分类Dev

使用完成后如何清除/垃圾收集局部变量值

来自分类Dev

如何将局部变量值从函数传递给 addEventListener 函数?

来自分类Dev

使用包含.Net中变量名称的字符串访问方法的局部变量值

来自分类Dev

无法在Python Selenium自动化中将局部变量值分配给Global变量-POM

来自分类Dev

如果不能测试局部变量,那么还有什么其他方法可以检查变量值

来自分类Dev

有什么办法可以将表命名为局部变量值(T-SQL)

来自分类Dev

如何在不更改全局变量的情况下更改分配给全局变量值的局部变量?

来自分类Dev

在JSON引号内添加变量值

来自分类Dev

循环内或循环外的局部变量

来自分类Dev

在PHP中的变量内更改变量值

来自分类Dev

空变量值

来自分类Dev

意外的变量值

来自分类Dev

输出变量值

来自分类Dev

改组变量值

来自分类Dev

更新变量值

来自分类Dev

显示变量值?

来自分类Dev

变量值不变

来自分类Dev

同步局部变量