С вашим кодом есть несколько вещей.
Прежде всего addroom
в вашем состоянии - это строковый массив в вашем конструкторе, но в методе handleClick
вы устанавливаете его как this.setState({ addroom: htmlId })
который установит его на string
, а на типе string
функция map
не определена, следовательно, ошибка. Вы должны добавить элемент в массив, например this.setState({ addroom: [...this.state.addroom, htmlId] })
Во-вторых, в вашем handleClick
вы не должны возвращать jsx, если вы хотите визуализировать данные для вашего addroom
массива, вы должны сделать это в метод render
, а в handleClick
нужно просто изменить переменную состояния addroom
. Вы можете достичь этого следующим образом:
render() {
return (
<div>
<button onClick={this.handleClick}>Add</button>
{this.state.addroom.map((addroom) => (
<button>{addroom}</button>
))}
</div>
)
}
Наконец, ваша переменная addrom
является только массивом строк, поэтому вы не можете получить доступ к id
, modifier
и context
в элементе в этом массив.