React.createRef() 在 useMemo 中
React.createRef() inside useMemo
使用这样的模式安全吗:
const appLoaders = useMemo(() => React.createRef(), [])
问题是我在 useEffect 中使用了这个 ref,并且在依赖项数组 (exhaustive-deps) 中需要它。上面的模式可以解决问题,并且一切似乎都有效 - 没有备忘录,当我将 ref 放入依赖项数组时,应用程序一直在重新渲染。
我只是想知道是否有一些 'traps' 在某些情况下会让我感到惊讶。
没有发现您的版本有任何问题,但是
const appLoaders = useRef();
看起来更短但完全一样(重新渲染之间的引用相等,我们设置初始值,更改值不会导致重新渲染)。
PS其实useRef
并不是React.createRef
的替代品(它们用途不同但名字相似,有时人misunderstand/misuse),所以不要混淆通过相似性。
但在这种特殊情况下,它们绝对可以互换
使用这样的模式安全吗:
const appLoaders = useMemo(() => React.createRef(), [])
问题是我在 useEffect 中使用了这个 ref,并且在依赖项数组 (exhaustive-deps) 中需要它。上面的模式可以解决问题,并且一切似乎都有效 - 没有备忘录,当我将 ref 放入依赖项数组时,应用程序一直在重新渲染。
我只是想知道是否有一些 'traps' 在某些情况下会让我感到惊讶。
没有发现您的版本有任何问题,但是
const appLoaders = useRef();
看起来更短但完全一样(重新渲染之间的引用相等,我们设置初始值,更改值不会导致重新渲染)。
PS其实useRef
并不是React.createRef
的替代品(它们用途不同但名字相似,有时人misunderstand/misuse),所以不要混淆通过相似性。
但在这种特殊情况下,它们绝对可以互换