Допустим, у меня есть исходное дерево состояний, которое выглядит следующим образом:
{
users: [],
items: []
}
В некоторых случаях результат вызова конечной точки API элементов может привести к такому дереву состояний:
{
users: [],
items: [
{itemId: 100, itemName: "Something100"},
{itemId: 101, itemName: "Something101"}
]
}
В других случаях, когда нет элементов для отображения, дерево состояний после вызова API будет идентично дереву начального состояния.
Теперь в моем компоненте I ' m с использованием useEffect, примерно так:
useEffect(() => {
if (items.length === 0) {
actions.loadItems().catch((error) => {
alert("Loading items failed! " + error);
console.log(error);
});
}
}, [items , actions]);
В этом конкретном случае длина элементов будет равна 0 в двух случаях: в исходном состоянии или в случае отсутствия результатов. Если API возвращает ноль элементов и items.length === 0, то действие для вызова API выполняется повторно.
Нам действительно нужен способ узнать, является ли пустой массив начальным состоянием или нет. Конечно, я мог бы изменить дерево состояний на что-то вроде:
{
users: {isLoaded: false, records: []},
items: {isLoaded: false, records: []},
}
Это добавит кучу накладных расходов и рефакторинга и может быть не самым эффективным / эффективным, так что может кто-нибудь дать мне рекомендацию?