Я пытаюсь реализовать пользовательский бэкэнд, но всякий раз, когда я вызываю callback
функцию каким-либо асинхронным способом, все мое приложение зависает, и мне приходится убивать вкладку в браузере. Это происходит только с useSuspense: true
. Из-за того, что я смотрю на код во время его работы, кажется, что я попал в какой-то бесконечный цикл в React.
Вот ссылка на рабочий пример: https://codesandbox.io/s/q8zmxvnn29
Раскомментируйте теги <React.Suspense fallback={<p>Loading...</p>}>
в индексном файле, и вся вкладка должна заморозиться при перезагрузке.
Вот так выглядит мой пользовательский бэкэнд:
.use({
type: "backend",
read: (lng: string, ns: string, callback: any) => {
// ==============
// Kills the tab
// ==============
setTimeout(() => {
callback(null, {
key1: "value1",
key2: "value2",
})
}, 3000)
// ==============
// Works
// ==============
// callback(null, {
// key1: "value1",
// key2: "value2",
// })
}
})
Я предполагаю, что мне не хватает какого-то кардинального правила того, как React обрабатывает HOC, но я не могу понять, что я делаю неправильно, или почему тайм-аут блокировал бы все приложение.