我知道 ref 是一个可变容器,因此不应在useEffect的依赖项中列出它,但它ref.current可能是一个不断变化的值。
当 ref 用于存储像 DOM 元素时<div ref={ref}>,并且当我开发依赖于该元素的自定义钩子时,假设ref.current如果组件有条件地返回,则可以随着时间的推移而改变,例如:
const Foo = ({inline}) => {
const ref = useRef(null);
return inline ? <span ref={ref} /> : <div ref={ref} />;
};
Run Code Online (Sandbox Code Playgroud)
我的自定义效果接收ref对象并ref.current用作依赖项是否安全?
const Foo = ({inline}) => {
const ref = useRef(null);
return inline ? <span ref={ref} /> : <div ref={ref} />;
};
Run Code Online (Sandbox Code Playgroud)
我读过这个评论说 ref 应该用于useEffect,但我无法弄清楚任何情况下ref.current改变但效果不会触发。
正如那个问题所建议的那样,我应该使用回调引用,但是引用作为参数对于集成多个钩子非常友好:
const useFoo = ref => { …Run Code Online (Sandbox Code Playgroud) reactjs ×1