rollup打包后(产物是umd格式),组件的静态属性丢失

比如有一个组件

import React, { createElement } from 'react';
import C from './C'
function A(){
  console.log(111)
  console.log(C)
  // return <div>111</div>
}
A.a=1111;
export default A

用rollup打包后会产生一个umd 格式的runtime.js

(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('react')) :
  typeof define === 'function' && define.amd ? define(['react'], factory) :
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.rootcloud = global.rootcloud || {}, global.rootcloud.RootcloudBar = global.rootcloud.RootcloudBar || {}, global.rootcloud.RootcloudBar.runtime = factory(global.React)));
})(this, (function (react) { 'use strict';

  function A() {
    return /* @__PURE__ */ react.createElement("div", null, "111");
  }
  A.a = 1111;

  var __defProp = Object.defineProperty;
  var __defProps = Object.defineProperties;
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
  var __hasOwnProp = Object.prototype.hasOwnProperty;
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __spreadValues = (a, b) => {
    for (var prop in b || (b = {}))
      if (__hasOwnProp.call(b, prop))
        __defNormalProp(a, prop, b[prop]);
    if (__getOwnPropSymbols)
      for (var prop of __getOwnPropSymbols(b)) {
        if (__propIsEnum.call(b, prop))
          __defNormalProp(a, prop, b[prop]);
      }
    return a;
  };
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
  const Index = (props) => {
    return /* @__PURE__ */ react.createElement(A, __spreadProps(__spreadValues({}, props), {
      reversal: false
    }));
  };

  return Index;

}));

当我在一个组件里面引入了该runtime.js 后,发现组件上并没有a属性

import ShowCompoment from './runtime'
console.log(ShowCompoment.a) // undefined

请问该怎么处理,才能访问到组件上的A属性呢?

阅读 4.3k
1 个回答

你的 function A 被解析成 react 组件了。你把顶上的 import React, { createElement } from 'react' 注释掉试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题