【问题标题】:Assign variable in ref.current.measure callback在 ref.current.measure 回调中分配变量
【发布时间】:2021-09-10 06:26:08
【问题描述】:

我在衡量我的观点的价值时遇到了问题。 我必须得到pageXpageY 的值。

一个组件看起来像:

  useEffect(() => {
    setTimeout(() => {
      updateElementPositions(index)
    })
  }, [])
....

 <StyledElement ref={elementRef[index]} style={style} index={index} type={type}> .....

更新元素位置是在上下文中声明的函数

 const updateElementPositions = (index: string) => {
    elementRef[index].current.measure((x: number, y: number, height: number, width: number, pageX: number, pageY: number) => {
      // HERE IS A PROBLEM
    })
  }

在此函数中,我想将 pageY 和 pageX 值分配给变量。问题是我有很多这样的组件(大约 300 个),我需要获取每个元素的尺寸。因此我不能使用 setState 或导致重新渲染的方法。我试图使用ref

 elementRef[index].current.measure((x: number, y: number, height: number, width: number, pageX: number, pageY: number) => {
      element.current[index] = {pageX, pageY}
    })

但是我遇到了这个对我来说很奇怪的错误

Error

分配给“正常”变量也会导致错误TypeError: Attempted to assign to readonly property.

我想不出该怎么做。

如果有人能帮助我,我将不胜感激:)。

问候

【问题讨论】:

    标签: javascript ios reactjs react-native measure


    【解决方案1】:

    elementRef[index].current 值当前是对 HTMLElement 的引用,因此您可能不应该改变它。我建议使用第二组参考来保存 pageX|Y 坐标值。通过索引设置特定 ref 的当前值。

    elementRef[index].current.measure((x: number, y: number, height: number, width: number, pageX: number, pageY: number) => {
      pageXYRefs.current[index].current = { pageX, pageY }
    });
    

    【讨论】:

    • 感谢您的回答,但这正是我正在做的。 (我的错误,我可以使用比elementRefelement 更好的名称:)。 )
    • @Tomasz 哦,拍摄,错过了,抱歉。更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多