V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cocong
V2EX  ›  React

export = React; 该怎么理解?

  •  
  •   cocong ·
    hzh-cocong · 2022-09-12 18:09:03 +08:00 · 2147 次点击
    这是一个创建于 583 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在学 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 ,还是不太懂,我自己也新建了个文件模仿了一下,发现运行出错,这个是要添加什么依赖?

    5 条回复    2022-09-15 16:54:57 +08:00
    newbieRenew
        1
    newbieRenew  
       2022-09-12 18:16:49 +08:00 via iPhone
    v17 以后不用声明 import React 了,默认就能用,估计和这个有关。
    walking50w
        2
    walking50w  
       2022-09-12 18:22:49 +08:00   ❤️ 3
    你看了 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
        3
    Leviathann  
       2022-09-12 18:31:08 +08:00
    老版本的 ts 语法,当年还没有 esm 的时候 ts 自己搞了一套 module/namespace 机制
    xingguang
        5
    xingguang  
       2022-09-15 16:54:57 +08:00
    react 有默认导出,也有方法导出,默认导出的是 React ,那些 hooks 就是当作 react 的方法导出的,这个是导出规则的问题,一个文件只能有一个默认导出,但是可以有很多方法和对象的导出
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5314 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:54 · PVG 16:54 · LAX 01:54 · JFK 04:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.