Как принудительно использовать обратный вызов?

#reactjs

#reactjs

Вопрос:

Как авторы библиотек, как вы применяете методы обратного вызова для своей библиотеки?

Например, я создал библиотечный компонент, который получает функцию обратного вызова:

 const myHandler = () => {
  // do something
};

return (<LibraryComponent onHandler={myHandler} />);
 

Теперь я хотел бы, чтобы разработчики, которые используют этот библиотечный компонент, использовали useCallback:

 const myHandler = React.useCallback(() => {
  // do something
}, []);

return (<LibraryComponent onHandler={myHandler} />);
 

Есть ли какой-нибудь способ обеспечить это, если у меня есть только контроль над LibraryComponent как у автора библиотеки?

Спасибо за вашу помощь! 🙂

Комментарии:

1. Если бы вы могли быть уверены, что зависимости существуют всегда [] , вы могли бы сохранить их useRef() самостоятельно, но вы не можете быть уверены в этом. Вы могли бы использовать useMemo() using [onHandler.toString()] как зависимость, но опять же преобразование замыкания в строку потеряет свой контекст. TLDR: нет, это ответственность вызывающего абонента, потому что вы не знаете, как будет использоваться ваш компонент. Ваш компонент несет ответственность за то, чтобы работать так, как задумано, независимо от того, как предоставляются его входные данные. Если вы пытаетесь применить руководство по кодированию для своей команды, вам лучше добавить для этого правило linter .