Вы хотите запросить функцию или сообщить об ошибке ?
Вопрос. Это также может быть связано с # 14563.
Как вызвать тревогу с крючка?
Почему возник вопрос?
Этот вопрос возник во время использования нами react-i18next
. Недавнее обновление react-i18next
предоставило крючок useTranslation
который позволяет получать текущие переводы, а также запускает загрузку еще не загруженных пространств имен переводов (что-то вроде разделения кода).
Чтобы обработать случай, когда переводы еще не загружены, крючок useTranslation
выдает обещание вызвать Suspense
, что на самом деле очень удобно, потому что оно полностью интегрируется с существующими функциями реагирования!
Однако, если вы используете больше хуков после вызова useTranslation
-hook, эти другие хуки не будут отображаться, если useTranslation
бросает обещание. После того, как переводы загрузятся, крючок больше не будет бросать и отреагирует, и вы получите большое красное предупреждение о том, что количество крючков изменилось.
Пример
const Component = () => {
const [t] = useTranslation('translationnamespace');
const [count, setCount] = useState(0);
return (
<div onClick={() => setCount(count + 1)}>
{t('The count is:')} {count}
</div>
);
};
Если translationnamespace
еще не загружен, useTranslation
выбросит, в результате чего useState
не будет отображаться. После загрузки translationnamespace
useTranslation
больше не будет генерировать, что вызывает отображение useState
, вызывающее предупреждение.
Общий случай
Таким образом, этот вопрос не относится только к response-i18next, но вместо этого применяется ко всем хукам, которые хотят вызвать неопределенность. Как мы это сделаем и как это будет интегрировано с текущими «Правилами хуков», которые гласят, что хуки не должны отображаться условно?
Похоже на ошибку, что ошибка возникает в случае приостановки. Афайк, это не было намеренно.
Хорошо, полезно знать!
Также можно задокументировать, что определено поведение не отображать все хуки в случае приостановки. Но я предполагаю, что это будет сделано после того, как приостановка будет официально введена как механизм выборки данных.
Думаю, мы исправили это в 16.8.2. Если нет, откройте новый с футляром для воспроизведения.
Самый полезный комментарий
Думаю, мы исправили это в 16.8.2. Если нет, откройте новый с футляром для воспроизведения.