我有一个包含以下代码的JS文件:

module.exports = function loadMyFun() {

    function activateSite($currentItem) {
        ...
    }
  ...
}


而且我想将其导入到JSX文件中,我试图这样做,但我无法正常工作:

import MyNav from './MyNav.js';

const top = MyNav.activateSite();

    componentDidMount () {
        var self = this;
        MyNav.activateSite($(self));
    }
...


我收到此错误:


  未捕获的TypeError:_MyNav.default.activateSite不是函数


任何想法如何解决这个问题?

最佳答案

如果您提供的代码实际上是您要加载的模块,则该模块存在一些问题。

您正在导出构造器loadMyFun,在导入后不调用/实例化它。

如果要像这样const myNav = new MyNav()实例化构造函数,则将具有导出的构造函数的实例。

为了使您的activateSite函数正常工作,您必须将其分配给实例本身,并通过像这样分配它来将其移出loadMyFunc的本地范围:

如果不需要在this.activateSite = function(){...}函数周围包含任何信息,我建议您使用函数而不是activateSite方法导出对象。

//myModule.js
module.exports = {
    activateSite: function(){ ... }
}
//otherFile.js
import { activateSite } from './myModule.js' // With destructuring
activateSite()

import myModule from './myModule.js' // Without destructuring
myModule.activateSite()

关于javascript - 将功能从JS导入JSX,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45297251/

10-11 05:33