我在 npm 模块重构中看到“withHandler.js”的代码,并遇到了以下代码片段
var factory = (0, _react.createFactory)(BaseComponent);
我在 React 库的许多地方都看到了类似样式的代码片段。
请有人帮助理解如何阅读此代码片段。
N.B. _react 是 react ,它被定义为
_react= require('react')
最佳答案
首先了解如何comma operator在 JavaScript 中工作。它从左到右计算操作数并返回最后一个。因此,(0, a.b)()
的计算结果为 (a.b)()
,然后是 a.b()
。
问:那么,(0, a.b)()
的意义何在?为什么不使用a.b()
?
A:当你写a.b()
时,b
内的this
指的是a
而不是全局对象。然而,在 (0, a.b)()
中,您调用 b
,而 this
引用全局对象。
因此,调用 (0, _react.createFactory)(BaseComponent)
确保 createFactory
函数中的 this
引用全局对象。
关于javascript - 理解代码模式 var factory = (0, _react.createFactory)(BaseComponent);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54502721/