шаблон, который вы используете, в порядке. Если внутри полезной нагрузки у вас есть массив с новыми элементами, ваш подход работает нормально. Но я предполагаю, что вы получаете те же элементы, только с любым обновленным свойством. Так, например, если у вас есть магазин домашних животных, подобный этому:
pets: [{id: 1, name: 'what'}], и ваша полезная нагрузка: [{id: 1, name: ' what2 '}], теперь вы оба сцепились в своем магазине, что плохо, потому что обновлен один и тот же объект. Итак, если у вас будет полный список, обновленный в запросе, я бы просто изменил ваш редуктор на:
const initialState = { pets: [] };
case ADD_PET:
return {
...state,
pets: action.payload
};
Так что каждый раз, когда вы делаете запрос API, у вас будет обновленный список элементов.
Другой случай, если вы получаете в запросе только обновленные данные, и вам придется фильтровать ваш объект на основе идентификаторов, а затем просто заменять обновленные. Но я не думаю, что это ваш случай.