S.M*_*Mhm 7 javascript ajax reactjs
在这一部分,用户可以评论帖子.在服务器端检查并收到数据后,我尝试更改该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{
}
}
});
Run Code Online (Sandbox Code Playgroud)
在data接收到所有相关文章的评论和评论部分是所有的评论都显示的地方.
您也可以使用箭头功能而不是手动绑定.
this.setState不起作用,因为它在使用普通函数时有范围问题.
将其更改为箭头功能.检查以下代码
$.post("requests.php", {
requestKey: 'newComment',
commenterUser: commenterUser,
commenterEmail: commenterEmail,
theComment: theComment,
pnum: pnum}, (data, status, xhr) => {
if(status == 'success'){
if(data == 'commented'){
this.setState({
comments: data
})
}else{
}
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:
如果您想远离范围问题,可以使用箭头功能.当您使用箭头功能时,您无需在构造函数中手动绑定您的函数
submitComment = () => {
}
Run Code Online (Sandbox Code Playgroud)
如果您使用普通函数并在该函数内使用状态或道具,则需要手动将当前对象引用到本地变量,如下所示
let that = this;
that.setState({
name: “update”
});
Run Code Online (Sandbox Code Playgroud)
对不起,如果有任何拼写错误.我在移动电话中回答
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |