使用 useRef 或 createRef 而不是内联引用有什么优点?

Kev*_*yat 4 ref reactjs use-ref create-ref

我正在进行代码审查,发现另一位开发人员编写的代码,例如:

function sampleComponent() {
       let divRef = {};
    
       return (
        <div ref={(el) => { divRef = el }}></div>
       )
    }
Run Code Online (Sandbox Code Playgroud)

然后使用 divRef 作为 DOM 元素的引用。

然而,我知道的模式是createRef在类组件中使用,useRef在功能组件中使用钩子。甚至 ReactJS 官方https://reactjs.org/docs/refs-and-the-dom.html也表示要避免未来 React 版本的内联引用。这是一个要写的遗留模式吗?

到目前为止我能研究的是,内联会ref渲染函数两次,因此建议避免。

我想知道对此还有什么其他解释?

Yua*_*ang 5

我认为他们建议不要使用字符串引用,因为它是遗留 API。没有提到不推荐内联引用。正如您所提到的,回调引用/内联引用多次调用函数,这可能是它们的主要警告。

无论如何,我认为如果不需要粒度, createRef 或 useRef 更像是“最佳实践”

对我来说,我尝试继续使用 createRef 和 useRef myRef.current(而不是仅仅使用它们myRef),以避免被它们混淆。