ES6 + экспорт импорта в рамках экспорта по умолчанию - PullRequest
0 голосов
/ 04 мая 2019

Я пытаюсь сделать это

state.js

export default {
  someValue: 'fooBar'
}

index.js

export default {
  export {default as state} from './state',
  export {default as actions} from './actions'
}

но мне нельзя, Unexpected keyword 'export' (2:2). Есть ли способ добиться этого?

1 Ответ

1 голос
/ 04 мая 2019

Вы можете использовать import и export только на верхнем уровне вашего модуля. (Вы можете использовать динамический import() в другом месте, но не статические версии.)

Итак, чтобы получить этот экспорт, вы должны сделать то, что, как вы сказали, вы пытаетесь избежать в комментариях:

import {default as state} from './state';
import {default as actions} from './actions';
export default {
  state, actions
};

, но , остерегайтесь того, что вы там экспортируете: объект со свойствами state и actions, чьи начальные значения взяты из импортированных state и action , но которые не связаны с ними. Код, импортирующий этот объект, может изменить эти свойства. Вы можете сохранить живое связывание:

import {default as state} from './state';
import {default as actions} from './actions';
export default {
  get state() {
    return state;
  },
  get actions() {
    return actions;
  }
};

но в этот момент вы как бы заново изобретаете объект пространства имен модуля. Вы можете предпочесть просто:

export {default as state} from './state.js';
export {default as actions} from './actions.js';

и затем используйте те именованные экспорты:

import {state, actions} from "./index";

или используйте объект пространства имен модуля

import * as index from "./index";
// Use `index.state` and `index.actions`
...