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

标签 javascript reactjs

我在 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/

相关文章:

javascript - 将 html 表导出为带有西类牙字符的 excel

javascript - chrome 开发工具,如页面底部的 UI 面板 UI 设计

javascript - 在 div 上制作图像,如邮票

javascript - 将 $scope 对象传递给 ng-if 和 ng-class 三元条件不起作用

reactjs - Eslint错误: Do not nest ternary expressions

javascript - 从从不同的缩减程序文件订阅的操作文件中分派(dispatch)操作是否是反模式?

reactjs - 带有 SliderComponent 输入的 React-hook -form

Javascript - 追加对象数组

javascript - Ant Design - 以编程方式从 Menu.Item 中取消选择/删除事件状态

javascript - React TypeScript Cheatsheet 的门户示例代码似乎已损坏