当我将类导出为“导出默认AvatarStore;”时与“导出默认的新AvatarStore();”我在尝试在其他类中使用其方法时遇到以下错误...使用新语法正确吗?

javascript - React Native“不是功能”-LMLPHP
这是代码:

import { List } from 'immutable';
    import EventEmitter from 'events';
    import Utils from '../utils/Utils.js'
    import RestService from '../services/RestService'
    import RestCallStatus from '../constants/RestCallStatus'
    import Avatar from '../models/Avatar'

    const CHANGE_EVENT = 'change';
    const TAG = 'AvatarStore';


    class AvatarStore extends EventEmitter {

    constructor() {
        super();
        this._populateRestCallStatus = RestCallStatus.NOT_REQUESTED;
        this._populated = false;
        this._dataStore = List();
    }

    populate(){
        RestService.getAllAvatars(this.handleSuccess.bind(this), this.handleFailure.bind(this));
        this._populateRestCallStatus = RestCallStatus.STARTED
    }

    handleSuccess(serviceName, jsonData){
        Utils.logMethod(TAG, 'handleSuccess ' + serviceName);
        if(jsonData.length > 0){  this._dataStore = List().clear(); }
        jsonData.forEach((entity) => {
            this._dataStore = this._dataStore.push(new Avatar(entity))
        });
        this._populated = true;
        this._populateRestCallStatus = RestCallStatus.SUCCESS;
        this.emitChange();
    }

    handleFailure(serviceName, error){
        Utils.logMethod(TAG, 'handleFailure');
        this._populateRestCallStatus = RestCallStatus.FAILED
        console.error(`Server call ${serviceName} failed with error: ${serviceName}!`)
    }

    getItems(){
        //Utils.logMethod(TAG, 'getItems');
        return this._dataStore;
    }

    getItemById(itemId){
        return Utils.findArrayElementById(this._dataStore, itemId);
    }

    getPopulated(){
        return this._populated;
    }

    addChangeListener(callback) {
        this.on(CHANGE_EVENT, callback);
    }

    removeChangeListener(callback) {
        this.removeListener(CHANGE_EVENT, callback);
    }

    emitChange() {
        Utils.logMethod(TAG, 'emitChange');
        this.emit(CHANGE_EVENT);
    }
}
export default new AvatarStore();

最佳答案

export default AvatarStore表示您要导出类。在export default new AvatarStore()情况下,导出类(对象)的实例。因此,您需要使用一种适合您的情况的方法-如果要拥有更多的AvatarStore实例,请使用第一种,否则,可以使用第二种。

当然,在第一种情况下,您需要在导入实例后的某个地方创建新实例。

关于javascript - React Native“不是功能”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37513248/

10-11 19:55