【问题标题】:How to use multiple ref variables on same html element in react?如何在反应中在同一个html元素上使用多个ref变量?
【发布时间】:2020-07-26 17:48:33
【问题描述】:

这是我的功能组件的渲染方法的简要sn-p(为简洁删除了不必要的代码)

  return (
    <Draggable draggableId={id} index={index}>
      {(provided, snapshot) => (
        <>
          <div className="carditem" ref={provided.innerRef} {...provided.draggableProps} {...provided.dragHandleProps} onClick={onClick}>
            <span className="carditem_title">{card.title}</span>
            <i className="fas fa-pencil-alt edit_button" onClick={onEditClick} />
            {hasDescription && <i className="fas fa-align-left desc_tag" title="This card has a description" />}
          </div>
          {isEditing && showOverlay && <input className="card_edit" type="text" autoFocus />}
        </>
      )}
    </Draggable>
  );

在第 5 行,如果你注意到我有一个

ref={provided.innerRef}

我想用className="cardItem" 获得div 的x,y 坐标,因此我想为该元素添加一个引用。但是 ref 已经存在,如上所示。 如何在不破坏现有 ref 的情况下添加自己的 ref 变量?

不确定它是否有帮助,但我正在使用 react-beautiful-dnd,这就是 provided.innerRef 的来源。

【问题讨论】:

    标签: javascript html reactjs ref


    【解决方案1】:

    你可以使用回调绑定多个 refs

    const refHanlder = el => {
      refA.current = el;
      refB.current = el;
    }
    
    ref={el => refHandler}
    

    回调也用于 Array of refs

    ref={el => elementRef.current[x] = el}
    

    【讨论】:

    • 感谢您的回答。一个小问题。如何将 provided.innerRef 传递给 refHandler 函数?
    • @theprogrammer 它是隐式传递的,如果你想让它成为参数,请使用 ref={el =&gt; refHandler(ref)}const refHanlder = el =&gt; () =&gt; {
    猜你喜欢
    • 2020-01-09
    • 1970-01-01
    • 2020-01-21
    • 2020-05-31
    • 2016-03-29
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多