代码之家  ›  专栏  ›  技术社区  ›  machineghost

在React中,向元素组件传递ref做什么?

  •  -1
  • machineghost  · 技术社区  · 1 年前

    我一直认为React中的引用是单向引用。换句话说,我认为如果我这样做了:

    const SomeComponent = () => {
      const ref = useRef();
      return <span ref={ref}>abc</span>
    }
    

    这个 ref 不会对 <span> 完全它只会让 SomeComponent 访问 <span> 的DOM元素。

    然而,我最近发现事实并非如此:ref实际上可以影响它传递到的元素 裁判 传入时间:

    const SomeComponent = forwardRef((props, ref) => {
      return <span ref={ref}>abc</span>
    });
    

    传入的 裁判 实际上可以使React不渲染子对象( 'abc' 在我的例子中) <span> 。一切正常(没有错误),但渲染为 <span></span> .

    所以我希望有人能帮助我理解,通过 裁判 变成一个组件实际上对组件本身做了什么?特别是,什么 裁判 包含对组件渲染的影响?

    我试过阅读React文档,但它们似乎没有涵盖这一点,所以我来到了这里。

    1 回复  |  直到 1 年前
        1
  •  2
  •   Nicholas Tower    1 年前

    将ref传递到组件实际上对组件本身有什么影响?

    如果传入ref对象(具有 .current 属性),然后react将把dom元素分配给 现在的 什么也不做。

    如果传入一个ref函数,那么react将调用该函数并传入dom元素。原则上,这个函数可以做任何事情,所以如果你写一个奇怪的函数,你可以删除元素的内容。但最常见的情况是,您只需将元素分配给某个对象的某个属性,就像react对ref对象自动执行的操作一样。

    特别是,引用包含的内容如何影响组件的渲染?

    唯一能做到这一点的方法是编写更改元素的代码。打破常规的裁判是完全被动的。