@acorn

Redux add item in array, crud?

Привет!
Есть action/reducer ,который загружает список продуктов из файла(пока замена бд). Список отображается в react.
Делаю действие add_product , не получается добавить в основной массив новый продукт. Что делаю не так? При проверки action в консоли $r.store.dispatch({...}) появляется данный продукт ,но в массиве его нет
Action
//load file
export function fetchProducts () {
    return dispatch => {
        dispatch({
            type: "FETCH_PRODUCTS",
            payload: sampleProducts
        })
    }
}
//add product
export function addProduct(product){
    return {
        type: ADD_PRODUCT,
         product
    };
}


Reducer
const initialState = {  products: [] };
export default function productReducer (state = initialState,action) {
    console.log(state,action);
    switch (action.type) {      
    case "FETCH_PRODUCTS":
            return{
                ...state,
                products: action.payload
            };
     //add
        case ADD_PRODUCT:
            return [
                ...state,
                {
                    product: action.product
                }
            ];
        default:
            return state;
    }
}
  • Вопрос задан
  • 1681 просмотр
Решения вопроса 1
@kristenstewartdadada
Frontend Developer
Почему при "FETCH PRODUCT" редьюсер возвращает объект а при добавлении массив? По сути "ADD_PRODUCT" должен работать чуть иначе:

case ADD_PRODUCT:
            return {
                ...state,
                {
                    products: [...state.products, action.product]
                }
            };
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы