#reactjs #react-hooks
#reactjs #реагирующие крючки
Вопрос:
У меня есть пользовательский хук react, который используется компонентом, но вместо того, чтобы получать хук из глобального контекста, я хотел бы определить его в реквизитах, как показано ниже.
const useThingFn = () => {
const doThing = () => console.log('Did thing')
const data = 'hello'
return { data, doThing }
}
const Component = ({
// Hooks
useThing = useThingFn,
}) => {
const { data, doThing } = useThing();
return (
<div>
<button
onClick={doThing}
>
Click Me
</button>
{data}
</div>
);
};
Есть ли какие-либо потенциальные проблемы с этим? Целью было бы легко имитировать хуки в тесте.
Комментарии:
1. Это не запрещено, но с этим определенно есть потенциальные проблемы. Например, если prop будет изменен в середине срока службы вашего компонента, вы нарушите правила перехватчиков, что приведет к тому, что приложение выдаст ошибку. Вам лучше перенести определение перехвата в отдельный файл и издеваться над ним, используя макет модуля.