问题:我能够在 componentDidMount 中使用 axios 进行 web api 调用,然后在 Render 中我可以使用 .map 循环遍历数据并使用 table 和 bootstrap 类创建 html。我遇到的问题是我需要有按钮来显示它们是否是本地存储中的成员。因此,现在我认为我需要将所有内容移出 Render() 并放置循环和 if/else 检查以在 webapi .then 部分中显示正确的按钮
使用 axios 调用中的 html 表和数据执行此操作的最佳方法是什么?
componentDidMount 与 Axios web api 调用:
componentDidMount() {
webApi.get('sai/getofflinemembers?userId=N634806')
.then((event) => {
// Instead of looping with .map in the render(), thinking I need to
// do the looping inside here to correctly create the correct element
// with the right color button and text
for (var i = 0; i < event.data.length; i++) {
//check with local storage if the memberid exist
// need to use a different button style and text
if (localStorage.getItem(event.data[i]["Member_ID"]) != null) {
//document.getElementById(event.data[i]["Member_ID"]).classList.remove('btn-warning');
//above would be after
// need to DO ALL in render const contents html table in here
// <button id={item.Member_ID} type="button" onClick={(e) => this.downloadUser(item.Member_ID,e)}
className="btn btn-success">SAI</button>
}
}
this.setState({
data: event.data
});
});
使成为:
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="btn btn-warning">Ready for Download</button>
</td>
</tr>
))
return(
....
{contents}
....
)
}
素胚勾勒不出你
侃侃尔雅
相关分类