【问题标题】:Are these exports identical in function?这些出口在功能上是否相同?
【发布时间】:2019-06-05 19:01:48
【问题描述】:

这些出口是否相同?对我来说,一个有效,另一个无效,但我不知道有什么区别。

工作

const faqStore = new Vapi({
    baseURL: 'http://domain.test/api',
    state: {
        faqs: [],
    }
}).get({
    action: 'getFaqs',
    property: 'faqs',
    path: '/faqs'
})

export default faqStore.getStore()

不工作

export default () => {
    const faqStore = new Vapi({
        baseURL: 'http://domain.test/api',
        state: {
            faqs: [],
        }
    }).get({
        action: 'getFaqs',
        property: 'faqs',
        path: '/faqs'
    })

    return faqStore.getStore()
}

我怎样才能让没有工作的例子表现得像工作的例子,以便我可以将参数传递给函数?

这就是它们各自的使用方式......

工作

import faqStore from './faqs'
...
await store.registerModule('faqs', faqStore));

不工作

import faqStore from './faqs'
...
await store.registerModule('faqs', faqStore());

【问题讨论】:

  • 不,它们不相等。第一个导出faqStore.getStore() 的返回值。第二个导出一个函数(调用faqStore.getStore())。但它们都是有效的。它们是否“工作”取决于它们的使用方式。
  • 您的第一个示例似乎很奇怪,因为正如@FelixKling 所说,它导出了getStore()返回值,并且由于您将其用作模块,因此该值一旦计算出来就永远不会改变(即任何其他导入这个模块的模块总是会得到相同的值,没有办法更新它)。我怀疑这可能不是您想要的。
  • 问题已更新以显示它的使用方式@FelixKling
  • 在什么情况下它不起作用?它会抛出错误吗?
  • 我是否遗漏了什么或者工作和不工作的代码是一样的?

标签: javascript vue.js ecmascript-6


【解决方案1】:

您正在导出一个函数而不是一个值。通过在导出函数之前评估函数,这会将您的不工作变成工作,就像您在工作代码中所做的那样:

export default (() => {
    const faqStore = new Vapi({
        baseURL: 'http://domain.test/api',
        state: {
            faqs: [],
        }
    }).get({
        action: 'getFaqs',
        property: 'faqs',
        path: '/faqs'
    })

    return faqStore.getStore()
})()

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2019-09-27
    • 2023-04-04
    • 1970-01-01
    • 2011-08-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多