javascript - es6如何导入已经在另一个js包中定义的
问题描述
我有一个我使用的包,有点像这样:
import { something } from 'somewhere';
但是我有另一个要导入的包,我需要定义something
其中定义的相同名称。
import myConsts from 'SomewhereElse';
const { something, another } = myConsts;
我得到一个 eslint 错误(这是正确的)something already defined
。
这是一个真实的例子:
import { connect } from 'react-redux';
// following lines from react-native-kontaktio sample code...
import Kontakt from 'react-native-kontaktio';
const { connect, configure, startScanning } = Kontakt;
我试过了
import { connect as kontaktConnect, configure, startScanning } from 'react-native-kontaktio'
但得到Possible promise rejection ... (reactNativeKontaktio.connect) is not a function
。
如果我尝试改变
import { connect as reduxConnect } from 'react-redux';
我将不得不按如下方式更改导出。这不会在其他地方破坏我的代码吗?
// export default connect(mapStateToProps, mapDispatchToProps)(AppMain);
export default reduxConnect(mapStateToProps, mapDispatchToProps)(AppMain);
我该如何克服呢?在某些情况下我可以忽略警告吗?Ecma6 中没有多态性,对吧?
这不是关于两个具有相同名称的类的问题,而是关于具有同名方法或常量的两个类的问题。那里的答案似乎适用于这里,使用:
// instead of: import myConsts from 'SomewhereElse';
import { something as somethingElse, another } from 'SomewhereElse';
但是,当我使用...somethingElse().then(()=> ...
我得到一个错误 Possible promise rejection ... (SomewhereElse.something) is not a function
这也不是[关于修复一般is already defined
eslint 错误的问题](Javascript standardjs - how to fix 'is already defined'?),因为我不是在谈论编写我的代码,而是如何导入和使用别人的两个包当他们有这个冲突问题时。
解决方案
不,我认为您不能忽略该警告,因为同一范围内存在 2 个同名变量。
您可能需要以这种方式导入:
import { connect as somethingElse} from 'react-redux';
避免使用同名的变量。
我希望它会帮助你
推荐阅读
- javascript - 如何在关联数组中列出带有 v-for 的项目?Vue
- html - 如何将 ng-model 变量值设置为 null?
- ember.js - Ember 简单身份验证设计身份验证器失败
- amazon-web-services - v4l2loopback 无法在 aws ubuntu 18.04 上加载模块
- powershell - 脚本运行后Powershell自我删除
- excel - 将文本框值放入变量
- python - 使用 python3.8 和 Ubuntu 20.04 设置 VTK
- c# - 有人在 Azure Web 应用程序中使用 SQL 依赖项有问题吗?
- windows - Windows - 构建 .obj 文件时“命令行太长”
- python - 使用来自其他列的两个计算值的最大值创建 Pandas 列