1

React的组件中不用bind(this),全部用箭头函数,这样会有什么缺点吗?

ygtzz 499
2018-12-18 提问
4 个回答
5

已采纳

箭头函数的优点就是可以自动绑定上下文中的this箭头函数的优点是不会创建自己的this,它只会从自己的作用域链的上一层继承this.当然这也有可能是缺点,比如在你需要改变this的时候,这个时候就需要改成普通函数了.
我遇到的另外一种情况是需要使用装饰器的情况,普通的函数使用装饰器直接覆盖descriptor.value就好了.但是如果装饰在箭头函数上面的话descriptor.value为空,需要通过别的方法来操作,有点麻烦,最后我直接改成普通函数,在最外面加了层绑定this的装饰器解决的.
其实也没多少好纠结的,只要你明白什么情况下不能用,其他情况下就大胆用.当你什么时候遇到问题了,就在心中记一笔,这种情况不能用就好了.跟结束加不加分号一个道理.用多了之后能遇到的情况基本上都遇到了,至于没遇到的情况,等遇到在说呗.


箭头函数表达式

0

没什么缺点,本身就是推荐这么写的。

写过很多项目,没有发现必须要使用bind(this)的情况

0

当然有缺点了, 箭头函数没有名字,有些时候无法提供友好的堆栈信息。

如果你都用箭头函数写的话可能会在报错堆栈中看到一堆堆的anonymous

0

建议使用箭头函数,这样可以避免 this 指向带来的隐藏问题,2楼说的 “箭头函数的优点就是可以自动绑定上下文中的this” 这 句是不对的,不是自己绑定,是 箭头里面根本就没有 自动去 改变 this, 也就是箭头函数里面没有 this, 自然的箭头函数里面的 this就是它上一级的。

撰写答案

推广链接