export = React; 该怎么理解?

2022-09-12 18:09:03 +08:00
 cocong

最近在学 React, 发现可以

import React, { useState } from "react;

也可以直接使用 React.useState ,很好奇就看了一下源码,结果就遇到了下面这行代码:

export = React; export as namespace React;

declare namespace React { ... }

一脸闷逼啊! export default 我知道,但是 export = 是个什么鬼,还有 export as namespace 又是个啥?

网上找了一圈,说是为了兼容 CommonJS 和 AMD ,还是不太懂,我自己也新建了个文件模仿了一下,发现运行出错,这个是要添加什么依赖?

2154 次点击
所在节点    React
5 条回复
newbieRenew
2022-09-12 18:16:49 +08:00
v17 以后不用声明 import React 了,默认就能用,估计和这个有关。
walking50w
2022-09-12 18:22:49 +08:00
你看了 j8 源码, 那是 *.d.ts typescript 给 react 库写的的 type
源码在 node_module/react 包下面,不是在 node_module/@types/react 下面

兼容我猜测你说的下面这种的代码,存在 react 稍早以前的版本上面
'use strict';

const React = require('./src/React');

module.exports = React.default || React;
Leviathann
2022-09-12 18:31:08 +08:00
老版本的 ts 语法,当年还没有 esm 的时候 ts 自己搞了一套 module/namespace 机制
zhengjian
2022-09-12 20:08:52 +08:00
xingguang
2022-09-15 16:54:57 +08:00
react 有默认导出,也有方法导出,默认导出的是 React ,那些 hooks 就是当作 react 的方法导出的,这个是导出规则的问题,一个文件只能有一个默认导出,但是可以有很多方法和对象的导出

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/879489

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX