В реакции вы не должны использовать getElementById
или любой другой способ изменить дом. У вас может быть что-то вроде этого:
<div style={{backgroundImage: this.state.image}}>...</div>
Поэтому, когда вы делаете:
this.setState({ image: 'some_value.png' });
, фоновое изображение будет обновляться автоматически.
В вашем случае, если вы необходимо изменить другой фон div на основе идентификатора div, вы можете сохранить карту в своем состоянии, что-то вроде этого:
clickHandler = (divId, color) => {
this.setState(state => ({ backgroundColors: { [divId]: color, ...state.backgroundColors} }));
}
Строка кода выше может быть трудно понять на первый взгляд, если вы не используете оператору распространения, но на самом деле все просто: он добавляет новый ключ к карте backgroundColors
, хранящейся в состоянии.
И вы бы использовали его так:
<div id="foo" style={{ backgroundImage: this.state.backgroundColors["foo"]}}>...</div>