Как передать функцию стрелки в качестве опоры компоненту, использующему зацепки, не вызывая useEffect, если не следует?
Codesandbox
function Apple(props) {
const { text, cb } = props;
useEffect(() => {
pretendFetch().then(result => cb(result));
// eslint-plugin-react-hooks dictates that `cb` should be within the dependencies array
}, [cb]);
return <div>{text}</div>;
}
Когда компоненту передается функция стрелки как cb
, он запускает useEffect при каждом рендеринге. В идеале он должен просто использовать обратный вызов один раз, но я не могу просто передать []
в качестве массива зависимостей без выдачи предупреждением eslint-plugin-Reaction-hooks. Я читал, что useRef можно использовать для переноса обратного вызова, но это похоже на неудовлетворительную информацию об этой проблеме.