Я пытаюсь передать данные объекта в действие, которое затем должно обновить одно поле в массиве объектов в состоянии избыточности.Я нашел это решение , которое очень похоже на мой вопрос, но я не могу понять, как применить его к моей ситуации здесь.Вот мой код:
Вот мой редуктор:
const initialState = {
plfrm: {
plfrm_collection: plfrm_collection,
comment_collection: comment_collection,
selected: [
// {
// plfrm_selected_key: null,
// plfrm_selected_name: '',
// like: null,
// comment_selected: null
// }
/* this should be the body of the selected object */
]
}
}
export default function PaymentInfoReducer(state = initialState, action) {
switch (action.type) {
case PAYMENT_INFO_PARAMS_CHANGES_PLFRM:
return update(state, {
plfrm: {
...state.plfrm,
selected: {
[action.id]: update(...state.plfrm.selected[action.id], {
$push: action.data
})
},
},
})
default:
return state
}
}
Вот мое действие:
export function plfrmChange(id, data) {
return {
type: PAYMENT_INFO_PARAMS_CHANGES_PLFRM,
id,
data
}
}
И когда я передаю его из компонента, я делаю это так:
plfrmChange = (key, field, value) => {
if(this.isPlfrmSelected(key)){ //item ald selected, update the [field]
console.log('found')
this.props.plfrmChange(this.findSelectedPlfrmIndex(key), {
[field]: value
})
} else { //item not selected yet, so add new [field]
console.log('not found')
if(this.props.plfrm.selected.length === 0){ //if no item in array yet, index will b 0
this.props.plfrmChange(0, {
[field]: value
})
} else { //otherwise index will equal to length of array
this.props.plfrmChange(this.props.plfrm.selected.length, {
[field]: value
})
}
}
}
и когда я бегу, я получаю эту ошибку:
TypeError: Cannot convert undefined or null to object
60 | return update(state, {
61 | plfrm: {
62 | ...state.plfrm,
> 63 | selected: {
64 | [action.id]: update(...state.plfrm.selected[action.id], {$push: action.data})
65 | },
66 | }
Я новичок, чтобы реагировать, и я знаю, что мой код грязный.Извинения в продвинутом.