Мне нужно загрузить три разных файла json в упорядоченной последовательности и с извлечением (причина в том, что я использую экспорт nextjs, и мне нужно, чтобы эти файлы читались динамически, поэтому я извлекаю их при необходимости, и их содержимое может менятьсядаже после экспорта)
Первый файл содержит данные, которые используются для создания URL-адреса для второго файла и т. д., поэтому для каждой выборки необходимо получить фактически обновленное состояние для извлечения,
ATM решение, которое я использую, поскольку второй и третий файлы зависят от первого и второго соответственно, выбирает первый файл и устанавливает некоторое состояние с помощью setState, затем в обратном вызове setState извлекает второй файл иустановить другое состояние и так далее:
fetch(baseUrl).then(
response => response.json()
).then(
res => {
this.setState({
...
}, () => {
fetch(anotherUrl+dataFromUpdatedState).then(
response => response.json()
).then(
res => {
this.setState({
...
}, () => {
fetch(anotherUrl+dataFromUpdatedState).then(
response => response.json()
).then(
res => {
this.setState({
})
}
)
})
}
).catch(
error => {
//error handling
}
)
})
}
).catch(
error => {
this.setState({ //an error occured, fallback to default
market: defaultMarket,
language: defaultLanguage,
questions: defaultQuestions
})
//this.setLanguage();
}
)
Теперь: я знаю, что setState нужно использовать осторожно, поскольку он асинхронный, но, насколько я знаю, функция обратного вызова вызывается после обновления состояния, поэтому из этогоТочка зрения государства должна корректно обновляться.Является ли это решение анти-паттерном, плохой практикой или по какой-то причине его следует избегать?
Код на самом деле работает, но я не уверен, так ли это.