Я не понимаю основного поведения системы ref в перехватчиках реакции.
Я понимаю, что useRef создаст постоянный объект, в котором во время каждого рендеринга будет изменяться только текущее свойство. Я ожидал, что createRef будет вести себя так же, но, по-видимому, не так:
Этот код создает бесконечное l oop
import React from "react";
export default function App() {
const [count, setCount] = React.useState(0)
const ref = React.createRef()
React.useLayoutEffect(() => {setCount(count => count+1)}, [ref])
return (
<h1 ref={ref}>{count}</h1>
);
}
Этот код не:
import React from "react";
export default function App() {
const [count, setCount] = React.useState(0)
const ref = React.useRef()
React.useLayoutEffect(() => {setCount(count => count+1)}, [ref])
return (
<h1 ref={ref}>{count}</h1>
);
}
Итак, что же это за c за createRef?
Более того, я сталкивался с некоторыми случаями, подразумевающими измерение детей, когда такое поведение становилось действительно проблематичным c. Итак, какой смысл использовать createRef вместо useRef?