Методы жизненного цикла, такие как componentDidMount
и render
, имеют стандартное разделение ролей. Как правило, первый предназначен для выполнения некоторого вызова API (например, того, что у вас есть), а второй - render, используется для генерации разметки. Вам не следует пытаться сгенерировать разметку в componentDidMount
, хотя в любом случае это не так.
Похоже, все, что вы пытаетесь сделать, это проверить, доступен ли элемент, возвращенный из API, в localStorage, затемусловно изменить className
для этой кнопки в зависимости от ее существования. Вы можете просто создать вспомогательную функцию, которая поможет вам в этом.
checkItem = (item) => {
let className;
if(localStorage.getItem(item["Member_ID"]) != null){
className = "btn btn-success"
} else {
className = "btn btn-warning"
}
return className
}
Затем, поскольку вы отображаете массив элементов, мы можем просто вызвать эту функцию в соответствии с вашей разметкой.
render() {
const contents = this.state.data.map(item => (
<tr>
<td>{item.Member_Name}</td>
<td>{item.Member_ID}</td>
<td>{item.Member_DOB}</td>
<td>{item.ProgramType}</td>
<td>
<button id={item.Member_ID} type="button" onClick={(e) => this.downloadUser(item.Member_ID,e)}
className={this.checkItem(item)}>Ready for Download</button>
</td>
</tr>
))
return(
....
{contents}
....
)
}