在这一部分,用户可以评论帖子.在服务器端检查并收到数据后,我尝试更改this.state.comments值.就这样完成了.但问题是,它没有改变组件的评论部分.
我已经阅读了之前关于重新渲染的问题,所以请不要将其标记为重复.以下是代码:
我已经阅读了之前关于重新渲染的问题,所以请不要将其标记为重复.以下是代码:
$.post("requests.PHP",{ requestKey: 'newComment',commenterUser: commenterUser,commenterEmail: commenterEmail,theComment: theComment,pnum: pnum},function(data,status,xhr){ if(status == 'success'){ if(data == 'commented'){ this.setState({ comments: data }) }else{ } } });
解决方法
您也可以使用箭头功能而不是手动绑定.
this.setState不起作用,因为它在使用普通函数时有范围问题.
$.post("requests.PHP",{ requestKey: 'newComment',(data,xhr) => { if(status == 'success'){ if(data == 'commented'){ this.setState({ comments: data }) }else{ } } });
编辑:
如果您想远离范围问题,可以使用箭头功能.当您使用箭头功能时,您无需在构造函数中手动绑定您的函数
submitComment = () => { }
如果您使用普通函数并在该函数内使用状态或道具,则需要手动将当前对象引用到本地变量,如下所示
let that = this; that.setState({ name: “update” });
对不起,如果有任何拼写错误.我在移动电话中回答