@Rebuslol

TypeError: Cannot read property '' of undefined. В чем может быть ошибка?

Все делаю по видео, вроде бы.

const initialState = {
    basketNumbers: 0,
    cartCost: 0,
    products: {
        blackBot: {
            name: 'Черные низкие',
            price: 10,
            numbers: 0,
            inCart: false
        },
        blackMonoBot: {
            name: 'Полностью черные низкие',
            price: 10,
            numbers: 0,
            inCart: false
        },
        redBot: {
            name: 'Красные низкие',
            price: 10,
            numbers: 0,
            inCart: false
        },
        redTop: {
            name: 'Красные высокие',
            price: 10,
            numbers: 0,
            inCart: false
        },
        whiteTop: {
            name: 'Белые высокие',
            price: 10,
            numbers: 0,
            inCart: false
        }
    }
}

export default (state = initialState, action) => {
    switch(action.type) {
        case ADD_PRODUCT_BASKET:
            let addQuantity = { ...state.products[action.payload]}

            addQuantity.numbers += 1
            addQuantity.inCart = true

            return {
                ...state,
                basketNumbers: state.basketNumbers + 1,
                cartCost: state.cartCost + state.products[action.payload].price,
                products: {
                    ...state.products,
                    [action.payload]: addQuantity
                }
            }
        case GET_NUMBERS_BASKET:
            return {
                ...state
            }
        default:
            return state
    }
}

После написания .price выдает ошибку. Не понимаю, что не так тут. Без .price ошибки нет, но и вся информация в корзине nan, кроме имени5f1443f11d584362452382.jpeg
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
0xD34F
@0xD34F
Пытаетесь достучаться до свойства несуществующего объекта. А объекта нет потому, что вместо ключа, под которым он доступен как свойство state.products, вы передаёте в addBasket его name. Исправьте вызов addBasket; если же там всё так, как и задумано, замените прямое обращение по имени свойства (state.products[action.payload]) на поиск нужного объекта по его name:

Object.values(state.products).find(n => n.name === action.payload)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы