Мне нужно обновить объект в состоянии, но только некоторые его элементы. Итак, если у него 7 элементов, а у моего нового объекта 4, эти 4 должны заменить существующие, а остальные должны быть сохранены.
Вот пример компонента, который выводит текущие ключи и значения объекта в состоянии. Когда вы нажимаете кнопку, объект должен получить новые значения некоторых свойств. Сейчас он перезаписывает объект четырьмя элементами, поэтому мне нужно его изменить. См. Метод handleClick.
В моем реальном проекте объект находится внутри состояния redux, но я думаю, решение будет таким же. Я получаю новые свойства из опубликованной формы, поэтому у меня есть объект, подобный приведенному ниже, с именем «update».
import React, { Component } from 'react';
import Button from 'material-ui-next/Button';
import Menu, { MenuItem } from 'material-ui-next/Menu';
class UpdateObject extends Component {
constructor(props) {
super(props)
this.state = {
theObject : {
token: '478478478478',
firstName: 'Goofy',
lastName: 'Hello',
age: '14',
sex: 'female',
employed: true,
favoriteColor: 'Blue',
bio: 'details of bio',
}
};
this.handleClick = this.handleClick.bind(this);
}
handleClick(){
let update = {
age: '40',
lastName: 'Newname',
employed: true,
favoriteColor: 'Yellow',
}
let change = Object.assign({}, this.state.theObject);
change = update;
this.setState({ theObject: change });
}
render() {
const myObj = this.state.theObject;
return (
<div className = "updateobjectwrapper bl">
<div> Here is the current object: <br />
<ul>
{ Object.entries(myObj).map(([ key,value ] ) => {
return (
<li key = {key}>{key} : {value} </li>
)
})
}
</ul>
</div>
<Button
onClick = {this.handleClick}
>
Update Object
</Button>
</div>
)
}
}




