Я новичок в react js
и Redux
.Здесь у меня есть массив объектов, который похож на
const initialState = {
Low: [
{
id: 0,
type: '',
count: '',
allowded: 6,
level: 'EASY'
}
],
Medium: [
{
id: 0,
type: '',
count: '',
allowded: 7,
level: 'MEDIUM'
}
],
High: [
{
id: 0,
type: '',
count: '',
allowded: 7,
level: 'TOUGH'
}
]
}
, это в редукторе.
Теперь у меня есть функция onChange, которая фактически изменяет значения в этом массиве.
onChange(event, tobeupdated, id, type, noc, data) {
let newData = { ...this.props.data };
if (newData) {
let data = newData[type].map((object, index) => {
if (object.id === id) {
object[tobeupdated] = event.target.value;
const tobeData = newData[type];
this.props.updateLowLevel({tobeData, type}).then(() => {
let criteria_filled = this.disableAddbutton({ ...this.props.data }, type);
addedRow = `new${type}RowAdded`;
this.setState({
[addedRow]: criteria_filled ? true : false
})
});
}
С этого момента я обновляю значение этого объекта.Зависит от типа.
Теперь, в действии создатель,
return (dispatch) => {
dispatch({
type: QUIZ_DATA,
data: tobeUpdated,
});
return Promise.resolve();
}
}
В моем редукторе я обновляю его как
case QUIZ_DATA:
return {
...state,
[action.data.type]: [action.data.tobeData],
error: false,
}
Теперь, вот чтопроисходит, когда я изменяю, скажем, type
, тогда к этому добавляется массив объектов, но когда я пытаюсь изменить diff-раз, то, что он делает,
В массиве объектов, еще одинобъект добавляется в элемент.Так что из-за этого я не могу получить этот рендер должным образом.
Может кто-нибудь помочь мне с этим?