在这一部分,用户可以评论帖子.在服务器端检查并收到数据后,我尝试更改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”
- });
对不起,如果有任何拼写错误.我在移动电话中回答