Есть ли какие-либо потенциальные проблемы с передачей пользовательского крючка react в качестве prop

#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 будет изменен в середине срока службы вашего компонента, вы нарушите правила перехватчиков, что приведет к тому, что приложение выдаст ошибку. Вам лучше перенести определение перехвата в отдельный файл и издеваться над ним, используя макет модуля.