了解代码模式var factory =(0,_react.createFactory)(BaseComponent);

时间:2019-02-03 12:14:09

标签: javascript reactjs

我看到npm模块中的“ withHandler.js”代码重新组合,并且遇到了以下代码片段
var factory = (0, _react.createFactory)(BaseComponent);
我在很多地方都看到了类似样式的代码片段在React库中。
请别人帮助理解如何阅读此代码段。

NB _react被定义为
_react= require('react')

1 个答案:

答案 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引用全局对象。