在react中,如下传参为啥会被允许,也不报错?传递的this也没看到接收啊?

作者站长头像
站长
· 阅读数 15

在react中,如下传参为啥会被允许,也不报错?传递的this也没看到接收啊?在react中,如下传参为啥会被允许,也不报错?传递的this也没看到接收啊?1.传递的this为啥在方法中没有接收?2.到底是this对应type,还是14对应type?3.这个e没有传递,是否允许?

回复
1个回答
avatar
test
2024-07-14

bind的第一个参数是用于改变函数内部的this指向,并不接收作为函数的参数,并且bind是函数的一个实例方法,并不是调用了函数;函数调用bind方法后会基于原函数生成一个新函数,本例中在onClick事件的回调会调用这个新函数,新函数从bind的第二个参数开始接收参数,所以"14"是作为type接收;

这里handleAudit因为你是用箭头函数定义的,其实可以不用bind去改变它的this指向,this已经是指向实例本身了;

e如果你没有使用的话,不传递是没关系的,但是你在下面调用了e的方法e.preventDefault()所以需要传递,如果你不需要阻止默认事件,可以把e.preventDefault()删掉,删掉的话不传递就没关系,否则e是undefined就会报错;

如果用不到e的话,可以做以下修改:onClick={() => this.handleAudit("14")}

handleAudit = (type) => {
  // e.preventDefault(); // 这段注释掉或者删掉
  // ... 其他剩余代码
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容