передача обратного вызова на пользовательский ответный хук - PullRequest
1 голос
/ 02 апреля 2020

У меня есть пользовательский хук, который создает веб-работника и регистрирует обратный вызов с работником:

const useMyHook(callback){ 
  React.useEffect(() => {
    let worker = /// create worker
    worker.onmessage = callback
  }, [callback])
}

, чтобы использовать хук, пользователь должен знать, чтобы обернуть обратный вызов в React.useCallback или каждый рендер создаст нового работника.

const callback = React.useCallback(() => doSomething())
useMyHook(callback)

Как я могу обновить свой хук, чтобы пользователь мог просто передать анонимную забаву c useMyHook(() => doSomething())

1 Ответ

0 голосов
/ 02 апреля 2020

Установите обратный вызов для ссылки, и тогда useEffect() не будет вызываться при каждом изменении обратного вызова:

const useMyHook(callback){ 
  const cb = useRef();

  cb.current = callback;

  React.useEffect(() => {
    const worker = /// create worker
    worker.onmessage = (...args) => cb.current(...args);
  }, [])
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...