在 useMemo 中 React.createRef()

Mac*_*ira 1 ref memo reactjs react-hooks

使用这样的模式是否安全:

const appLoaders = useMemo(() => React.createRef(), [])
Run Code Online (Sandbox Code Playgroud)

问题是我在 useEffect 中使用了这个 ref 并且在依赖数组(exhaustive-deps)中需要它。上面的模式可以解决问题,一切似乎都有效 - 没有备忘录,当我将 ref 放入依赖项数组时,应用程序处于不断重新渲染状态。

我只是想知道在某些情况下是否有一些“陷阱”会让我感到惊讶。

sky*_*yer 5

没有看到您的版本有任何问题,但是

const appLoaders = useRef();
Run Code Online (Sandbox Code Playgroud)

看起来更短并且完全相同(重新渲染之间的引用相等,我们设置初始值,更改值不会导致重新渲染)。

PS实际上useRef不是替代品React.createRef(它们具有不同的目的但名称相似,有时人们会误解/误用),所以不要被相似性混淆。

但在这种特殊情况下,它们绝对可以互换