重新导出模块不适用于对象传播
Re-exporting modules does not work with object spread
我有一个 index.js
文件,上面写着:
import aReducer from './ducks/a';
import bReducer from './ducks/b';
import * as aSelectors from './ducks/a';
import * as bSelectors from './ducks/b';
console.log(aReducer) //function i expect
console.log(aSelectors) //object with keys to selectors i expect
export { aReducer, bReducer, ...aSelectors, ...bSelectors };
如果我 console.log
在此文件中,我看到缩减器是我期望的函数,选择器别名是具有我期望的选择器键的对象。减速器是鸭子文件的默认导出,选择器是从同一个文件导出的。
但是,当我尝试用另一个文件导入此模块时,我只能导入两个减速器。这两个选择器是未定义的。我认为解构会将每个键添加到我的导出对象中。我究竟做错了什么?
other_file1.js
import { aReducer, bReducer } from 'my-module'; //works!
other_file2.js
import { someSelectorThatWasInMyaSelectorsObject } from 'my-module'; //does NOT work!
您不能在 export {};
块中使用 ...
。它是一个明确的名称列表,就像 import {name} from
一样。它不是导出密钥的对象。例如与进口方式相同
import { foo as fooRenamed } from "";
和export
是
export {
fooVar as foo,
};
export
块是要导出的变量的显式列表,带有可选的显式导出名称。没有涉及对象。
具体来说,没有涉及对象,因为导出的名称在文件主体执行之前就已处理并已知,因此不仅不允许对象,而且不可能允许,因为对象需要执行才能存在。
要得到你想要的,你应该使用:
// Export the referenced files' default under two specific names.
export { default as aReducer } from './ducks/a';
export { default as bReducer } from './ducks/b';
// Re-export every named export from these two files.
export * from './ducks/a';
export * from './ducks/b';
我有一个 index.js
文件,上面写着:
import aReducer from './ducks/a';
import bReducer from './ducks/b';
import * as aSelectors from './ducks/a';
import * as bSelectors from './ducks/b';
console.log(aReducer) //function i expect
console.log(aSelectors) //object with keys to selectors i expect
export { aReducer, bReducer, ...aSelectors, ...bSelectors };
如果我 console.log
在此文件中,我看到缩减器是我期望的函数,选择器别名是具有我期望的选择器键的对象。减速器是鸭子文件的默认导出,选择器是从同一个文件导出的。
但是,当我尝试用另一个文件导入此模块时,我只能导入两个减速器。这两个选择器是未定义的。我认为解构会将每个键添加到我的导出对象中。我究竟做错了什么?
other_file1.js
import { aReducer, bReducer } from 'my-module'; //works!
other_file2.js
import { someSelectorThatWasInMyaSelectorsObject } from 'my-module'; //does NOT work!
您不能在 export {};
块中使用 ...
。它是一个明确的名称列表,就像 import {name} from
一样。它不是导出密钥的对象。例如与进口方式相同
import { foo as fooRenamed } from "";
和export
是
export {
fooVar as foo,
};
export
块是要导出的变量的显式列表,带有可选的显式导出名称。没有涉及对象。
具体来说,没有涉及对象,因为导出的名称在文件主体执行之前就已处理并已知,因此不仅不允许对象,而且不可能允许,因为对象需要执行才能存在。
要得到你想要的,你应该使用:
// Export the referenced files' default under two specific names.
export { default as aReducer } from './ducks/a';
export { default as bReducer } from './ducks/b';
// Re-export every named export from these two files.
export * from './ducks/a';
export * from './ducks/b';