Итак, я новичок в React и пытаюсь создать простое приложение для покупок. Я также использую Redux store и Saga.
У меня есть два редуктора.
A productsReducer
, который имеет следующее начальное состояние:
const initState = {
products: [],
loading: false
}
Я загружаю данные о товарах вproducts
массив с get
вызовом API.
У меня есть другой редуктор с именем cartReducer
, который имеет следующее начальное состояние и должен реализовать и добавить действие в корзину:
const initState = {
loading: false,
cartItems: [],
cartCount: 0
}
Код для добавления в корзину:
case 'ADD_TO_CART':
let addedItem = state.products.find(product => product.id === action.id)
// products array contained list of products
let existed_item = state.cartItems.find(product => action.id === product.id)
if (existed_item) {
existed_item.quantity += 1
return {
...state,
cartItems: state.cartItems,
cartCount: state.cartItems.length,
}
} else {
let newItem = Object.assign({}, addedItem);
newItem.quantity = 1;
return {
...state,
cartItems: [...state.cartItems, newItem],
cartCount: state.cartItems.length,
}
}
Я объединяю оба редуктора следующим образом:
const rootReducer = combineReducers({
cartReducer,
productsReducer
})
export default rootReducer;
Изначально у меня были действия обоих редукторов в одном месте, чтобы я мог получить доступмассив products
в моей функции ADD_TO_CART
. Но теперь, когда я разделил действия на отдельные редукторы, я не знаю, как получить доступ к массиву products
из productsReducer
внутри cartsReducer
.
Может кто-нибудь помочь?