javascript - 在 React 中更改状态后组件不会重新渲染
问题描述
我面临一个问题。每当我单击激活或停用按钮时,状态 (statusUpdated) 都会更新,但组件不会重新呈现。有人可以告诉我我在这里做错了什么并帮助我解决这个问题。
在 ComponentDidMount 上,我调用 api 来获取用户列表,然后在数组中存储一些数据。我想通过单击按钮来激活或停用用户。当用户单击任何按钮时,都会调用相应的函数。在相应的函数中,我再次调用了 api ,之后我正在更新状态,该状态正在更新但组件没有重新渲染。
请帮我解决问题。谢谢你。
constructor(props) {
super(props);
this.state = {
usersList : [],
buttonClicked : false,
};
this.DeactivateUser = this.DeactivateUser.bind (this);
this.ActivateUser = this.ActivateUser.bind (this);
}
componentDidMount () {
var usersList = [];
apiCallHere ()
.then ((response) => response.json ())
.then ((findresponse) => {
findresponse
.sort ((x, y) => y.id - x.id)
.map ((obj) => {
usersList.push ({
Id : obj.id,
Status : obj.state === 'A' ? <button onClick={(e) => this.DeactivateUser(obj.id)}>Deactivate</button> : <button onClick={(e) => this.ActivateUser(obj.id)} >Activate</button>,
})
})
this.setState ({ usersList: usersList})
})
}
ActivateUser = (id) => {
apiCalled (id)
.then ((response) => response.json ())
.catch ((error) => {
this.setState ({statusUpdated : true})
})
}
DeactivateUser = (id) => {
apiCalled (id)
.then ((response) => response.json ())
.catch ((error) => {
this.setState ({statusUpdated : true})
})
}
render () {
return (
<div> {this.state.usersList.map ((obj) => {
<li>obj</li>
})}
</div>
)
}
解决方案
推荐阅读
- javascript - 在字符串和字符串数组之间生成最长匹配数组
- python - 将多索引熊猫合并为单个熊猫
- bash - 来自awk中嵌套for循环的bash变量
- c++ - 结构和类成员结构 C++
- php - cURL 使页面永远加载,然后网关超时
- javascript - 每个电子邮件收件人配额的 GmailApp 或如何在不向 50 多人发送电子邮件的情况下测试 GmailApp 代码?
- python - 与上一季度的差异变化
- arrays - 如何将浮点值添加到 C/Arduino 中的字节数组?
- phpmyadmin - 访问 phpMyAdmin 表时出现各种错误
- .net - 使用 .NET 3.5 和 4.8 SDK 构建 Docker 容器?