javascript - 如何使用不直接导出的组件?
问题描述
我需要使用一个没有直接导出的组件,如下:在库文件夹TopComponent/index.js
中,它是:
import NeededModule from "./NeededModule";
import TopComponent from "./presenters/TopComponent";
TopComponent.NeededModule = NeededModule ;
export default TopComponent; // the library only export this
在我的代码中,我只能导入 TopComponent。使用以下代码:
//my code
import TopComponent from '@lib/topcomponent';
...
render () {
return ( <TopComponent.NeededModule /> )
}
会报错
无法读取未定义的属性“NeededModule”
我该如何使用该组件?在调试期间检查,在 webpack 生成的文件中,在渲染函数中,它包含一个
return _React2.default.createElement(_topComponent.TopComponent.NeededModule,...
未定义TopComponent
的行。如果我修改 webpack 生成的 js 文件,将行更改为return _React2.default.createElement(_topComponent.default.NeededModule,...
it will work..
解决方案
你有没有尝试
// in TopComponent/index.js
export { default as NeededModule } from './NeededModule';
export { default as TopComponent } from './TopComponent';
// in your code
import { TopComponent, NeededModule } from '@lib/topcomponent';
我知道这不是你真正想要做的,但我认为它会有所帮助。
推荐阅读
- c# - 错误“无法比较数组中的两个元素 - 至少一个对象必须实现 IComparable”以删除 EF Core 3.1 中的多行
- algorithm - 检查字符串中所有字符是否唯一的方法的复杂性
- c# - 如何安全地连接uri路径段?
- virtualenv - PythonVirtualenvOperator 创建的 venv 的根在哪里?
- python - 使用 pip 通过 anaconda 提示符安装 python 包
- node.js - 如何使用 node-notifier 或其他一些 Node 通知库增加 macOS Big Sur 中通知中心通知图像的大小?
- spring-cloud-stream - spring cloud dataflow 自定义 sink 错误处理
- c++ - OpenPGP C++:cmake - 找不到 -lgmpxx 的库
- c# - 如何将沙人请求转换为 .net(VB 或 C#)
- angularjs - 在 AngularJS 指令中包装 shaka-player 不起作用(this.target.addEventListener 不是函数)