繁体   English   中英

在 ES6 / react 中导出函数

[英]Exporting function in ES6 / react

在服务器端(nodejs/express),我在导出和引用这个文件(使用 Attempt1)时没有问题。

// collectionFile.js
function collection() {
    let data = {};
    function getData(key) {
        return data[key];
    }
    function setData(key, value) {
        data[key] = value;
    }
    return {
        getData: getData,
        setData: setData
    };
}

const instanceOfCollection = collection();

在客户端 (React),我只是无法引用和访问 getData 函数。 以下是我尝试过的一些组合。 他们都没有工作。 我怎样才能让它工作?

// Attempt1: export
// module.exports.getter = instanceOfCollection.getData;

// Attempt1: import
// const getter = require('./collectionFile').getter;
// Uncaught TypeError: getter is not a function

// Attempt2: export
// export default { instanceOfCollection };

// Attempt2: import
// import instanceOfCollection from './collectionFile';
// const instance = instanceOfCollection.getData;
// Uncaught TypeError: Cannot read property 'getData' of undefined

// Attempt3: export
// export const instanceOfCollection = collection();

// Attempt3: import
// import { instanceOfCollection } from './collectionFile';
// const instance = instanceOfCollection.getData;
// Uncaught TypeError: Cannot read property 'getData' of undefined

编辑:原来我是从文件 B 引用文件 A 和从文件 A 引用文件 B 之前

有很多方法可以做这样的事情:

  1. ES5 导出

    module.export = instanceOfCollection

    那么

    var getData = require('my_module').getData

  2. ES6 导出

    export default instanceOfCollection

    那么

    import { getData, setData } from 'my_module'

  3. ES6 命名导出

    export const setter = instanceOfCollection.setData export const getter = instanceOfCollection.getData

    那么

    import { setter, getter } from 'my_module'

    import * as myCollection from 'my_module' myCollection.getter() myCollection.setter()

  4. ES5 重命名

    module.export = { getter: instanceOfCollection.getData, setter: instanceOfCollection.setData, }

    那么

    const { setter, getter } = require('my_module')

    const getter = require('my_module').getter const setter = require('my_module').setter

希望其中一些对你有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM