antd的对话框onOK这个回调函数里面this指向

#1

发现使用了antd的对话框后,点击确定,会报错TypeError: Cannot read property ‘state’ of undefined
at Translate.jsx:144,没使用对话框之前是可以正常运行的,感觉是this指针问题,= =可是都使用了箭
头函数了啊,就很纳闷了。仅在confirm里面使用this才会出错。

#2

onOk 和 onCancle 不是箭头函数

你改成箭头函数试一下

如果还不可以,那就在在外边 const self = this

里边用 self

1 Like
#3

confirm({
title:‘标题’,
onOk:()=>{
},
onCancel:()=>{
}
})

1 Like
#4

试过onOk改箭头函数,还是不行

之前百度了下,好像Modal.xxx(success、info这些)好像都不能用this

antd官网例子也是用普通函数的,后面改用基础对话框解决了。

#5

https://codepen.io/anon/pen/vvZKLY?editors=0010

ojbk 没有什么问题

#6

你改下_this = this; 你再试试。

#7

确定 箭头函数不行吗?为什么我这里可以

我怀疑你 handerFinsh 这个方法的 this 不对,你看一下,你是怎么绑定的

#8

是不是跟外层也是箭头函数有关系

#9

仔细回想一下,当时好像确实是绑定有问题= =,onClick={(这里漏了record和index)=>handleFinish(record,index)

#11

是这个组件吧?

Left

confirm这个地方这样写: this.confirm.bind(this) 就能绑定当前上下文环境

#12

内部再 const self = this,闭包里面用self就不会有问题

#13

嗯嗯,这样也可以,我之前用()=>xxx()的方法绑定的,后面的括号传参时,前面漏了参数:disappointed_relieved: