V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
cocong
V2EX  ›  React

export = React; 该怎么理解?

  •  
  •   cocong ·
    hzh-cocong · Sep 12, 2022 · 2802 views
    This topic created in 1333 days ago, the information mentioned may be changed or developed.

    最近在学 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 replies    2022-09-15 16:54:57 +08:00
    newbieRenew
        1
    newbieRenew  
       Sep 12, 2022 via iPhone
    v17 以后不用声明 import React 了,默认就能用,估计和这个有关。
    walking50w
        2
    walking50w  
       Sep 12, 2022   ❤️ 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  
       Sep 12, 2022
    老版本的 ts 语法,当年还没有 esm 的时候 ts 自己搞了一套 module/namespace 机制
    xingguang
        5
    xingguang  
       Sep 15, 2022
    react 有默认导出,也有方法导出,默认导出的是 React ,那些 hooks 就是当作 react 的方法导出的,这个是导出规则的问题,一个文件只能有一个默认导出,但是可以有很多方法和对象的导出
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5829 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 91ms · UTC 02:42 · PVG 10:42 · LAX 19:42 · JFK 22:42
    ♥ Do have faith in what you're doing.