gpt4 book ai didi

javascript - 尝试从导入的 ES6 模块调用静态方法

转载 作者:行者123 更新时间:2023-11-30 21:01:37 25 4
gpt4 key购买 nike

我正在使用将 dom.moduleScripts.enabled 设置为 true 的 Firefox 56。这使我能够使用原生 ES6 模块。

我有一个 vue2 组件,它定义了一个方法:

import StorageZonesAjaxMethods from '../../ajax/storage-zones.js';
....
methods: {
updateList()
{
//console.log(StorageZonesAjaxMethods);
StorageZonesAjaxMethods.getList();//function(response) { this.list = response.data.payload;});

},
},

带有方法的类在哪里:

export default new class StorageZonesAjaxMethods {

static getItem(id, then)
{
axios.get(`${Config.apiBaseUrl}/storage-zones/${id}`)
.then(response => then);
}

static getList(then)
{
alert('in get list');
axios.get(`${Config.apiBaseUrl}/storage-zones`)
.then(response => then);
}

我在 firefx 中收到错误 "TypeError: (intermediate value).getList is not a function",但 console.log 显示它是错误的,但由于某种原因它在构造函数中。怎么回事?

最佳答案

Never use new class { … } !

don't default-export a class with only static methods任何一个。简化为

export default {
getItem(id) {
return axios.get(`${Config.apiBaseUrl}/storage-zones/${id}`);
}
getList() {
alert('in get list');
return axios.get(`${Config.apiBaseUrl}/storage-zones`);
}
};

或者甚至更好地更改两个文件并使用

export function getItem(id) {
return axios.get(`${Config.apiBaseUrl}/storage-zones/${id}`);
}
export function getList() {
alert('in get list');
return axios.get(`${Config.apiBaseUrl}/storage-zones`);
}

import * as StorageZonesAjaxMethods from '../../ajax/storage-zones.js';

关于javascript - 尝试从导入的 ES6 模块调用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47087244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com