Взято из Правила крючков :
Не вызывать хуки внутри циклов, условий или вложенных функций. Вместо этого всегда используйте хуки на верхнем уровне вашей функции React
Учитывая эту рекомендацию группы реагирования, было бы нецелесообразно использовать хук в верхней части функции рендеринга реквизита? Предполагая, что это зависит от значения, возвращаемого функцией.
const MyComponent = () => (
<RenderPropComponent>
{value => {
React.useEffect(() => {
// Magic
}, [value]);
return <p>Hello</p>;
}}
</RenderPropComponent>
);
Я не чувствую, что это нарушает их требование
Следуя этому правилу, вы гарантируете, что хуки вызываются в одном и том же порядке каждый раз, когда компонент отображает
Но я должен вместо этого делать следующее?
const MyComponent = ({ value }) => {
React.useEffect(() => {
// Magic
}, [value]);
return <p>Hello</p>;
};
const MyContainer = () => (
<RenderPropComponent>
{value => <MyComponent value={value} />}
</RenderPropComponent>
);