Выдвинуть или обновить объект в массиве в массиве с помощью приставки - PullRequest
0 голосов
/ 08 марта 2019

Я хотел бы знать, как я могу обновить конкретный массив или свойство в массиве с помощью массива с избыточным значением.

В настоящее время у меня есть состояние:

Состояние

props1 : "props1",
props2 : "props2",
props3 : "props3",
buckets : [{
    bucketProps1 : "bucketProps1",
    bucketProps2 : "bucketProps2",
    bucketProps3 : "bucketProps3",
    blocks : [{
        blockProps1 : "blockProps1",
        blockProps2 : "blockProps2",
        blockProps3 : "blockProps3",
        messages : [{
            messageProps1 : "messageProps1",
            messageProps2 : "messageProps2",
            messageProps3 : "messageProps3",
            replies : [{ 
                repliesProps1 : "repliesProps1",
                repliesProps2 : "repliesProps2",
                repliesProps3 : "repliesProps3",
            },
            {...
            }],
        },
        {...
        }],
    },
    {...
    }],
},
{...
}]

Я хотел бы добавить ответ в массиве ответов:

Редуктор-sequences.js

case SEQUENCES.ADD_REPLY :

let newReplies = action.payload;

return {
...state,
buckets: state.buckets.map((bucket, i) => i === 0 ? {
        ...bucket,
        blocks: state.bucket.blocks.map((block, i) => i === 0 ? {
            ...block,
            messages: state.block.messages.map((message, i) => i === 0 ? {
                ...message,
                replies: [...state.buckets[0].blocks[0].messages[0].replies, newReplies]
            } : message)
        } : block)
    } : bucket)
};

Но у меня есть эта ошибка:

TypeError: Невозможно прочитать свойство 'blocks' из неопределенного

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Я думаю, что вместо того, чтобы делать:

blocks: state.blocks.map

Вы должны сделать:

blocks: bucket.blocks

То же самое происходит и со следующей картой: Измените его на: block.messages

0 голосов
/ 08 марта 2019

Вы должны сделать что-то вроде: {...replies} не ...replies.

Но попробуйте реорганизовать ваш код, чтобы избежать сложных решений, подобных этому.

...