最近,我发现使用useRef的方法对我来说非常陌生. UseRef(uuid())--它是生成稳定id的有效方式,还是应该避免的方式?
最近,我发现使用useRef的方法对我来说非常陌生. UseRef(uuid())--它是生成稳定id的有效方式,还是应该避免的方式?
它将生成一个稳定的id,但在它当前的形式中,它将在每个渲染周期调用uuid()
.在这里,它可能不是什么大事,但想象一下,如果它是一个沉重的功能.将其称 for each 渲染周期可能会影响性能.相反,您可以考虑使用useEffect
挂钩来分配ref值.
示例:
const idRef = useRef();
useEffect(() => {
idRef.current = uuid();
}, []);
您还可以创建一个getter函数,该函数返回当前ref值,并仅在必要时创建它.
示例:
const idRef = useRef();
const getId = () => {
if (!idRef.current) {
idRef.current = uuid();
}
return idRef.current;
};