我看到npm模块中的“ withHandler.js”代码重新组合,并且遇到了以下代码片段
var factory = (0, _react.createFactory)(BaseComponent);
我在很多地方都看到了类似样式的代码片段在React库中。
请别人帮助理解如何阅读此代码段。
NB _react被定义为
_react= require('react')
答案 0 :(得分:3)
首先了解comma operator在JavaScript中的工作方式。它从左到右评估操作数,并返回最后一个。因此,(0, a.b)()
的计算结果为(a.b)()
,然后为a.b()
。
问:那么(0, a.b)()
的意义是什么?为什么不a.b()
?
A:当您写a.b()
时,this
中的b
指的是a
而不是全局对象。但是,在(0, a.b)()
中,您正在调用b
,而this
是指全局对象。
因此,调用(0, _react.createFactory)(BaseComponent)
可确保this
函数内的createFactory
引用全局对象。