Пусть оба редуктора выслушают ваши действия, если они оба изменятся, когда произойдет это действие. Все редукторные редукторы эффективно прослушивают все отправленные действия. Они игнорируют действия, если это не меняет состояние.
const petPostReducer = (prev = defaultValue, action = {}) => {
const { type, payload} = action;
switch (type) {
case "LIKE_DONE": {
const {id} = payload || {};
const oldItem = prev[id] || {}
const newItem = {...oldItem, like: true}
return {
...prev
[id]: {...updateItem, [id]: newItem};
}
default: {
return prev; // Ignore all other actions != LIKE_DONE
}
}
};
Можно создавать более явные действия, но вы обычно делаете это, когда у вас есть другие действия. (Всегда есть исключения)
По возможности избегайте логики в ваших редукторах.
Если данные о питомцах и пользователях очень похожи, рассмотрите возможность изменения формы своего состояния и используйте один пост редуктора.
console.log(state.posts) =>
{
0: {type: 'user' like: false},
1: {type: 'pet' like: false},
2: {type: 'user' like: true},
}
Пожалуйста, избегайте преждевременной оптимизации . Я часто делаю вещи, которые менее эффективны, в пользу простого, лаконичного, неизменяемого, читабельного и полезного кода. Если вы нацеливаетесь на функциональный телефон или обнаруживаете узкое место в реальной производительности, вам необходимо провести измерения с помощью инструментов мониторинга производительности. Оптимизация движка JavaScript постоянно улучшается, и результаты часто бывают удивительными.