在 Javascript 中导出 class 个实例
Export of a class instance in Javascript
我正在查看 this 代码,其中 class 实例以有点奇怪的方式导出。
提供截图。导出如下:
class RegisterStore {
@observable success = false
@observable failure = false
@observable errors = {}
...
}
export default new RegisterStore()
export { RegisterStore }
并在index.js中导入如下:
import registerStore from './stores/RegisterStore'
...
const stores = {
registerStore
...
}
为什么第一个代码末尾有两个导出?是
export default new RegisterStore()
AND
const NewRegisterStore = new RegisterStore(); export default NewRegisterStore
等价于 ?
没有export default new RegisterStore() and export { RegisterStore }
不相等。在 export { RegisterStore }
中,您将 class 作为导出对象的一部分导出,而在 export default new RegisterStore()
中,您将导出 class.
的实例
更进一步。 export default new RegisterStore()
应该足以正常工作。除非您不想从同一个文件导入多个变量,否则再次导出行是无用的。在那种情况下,它就像:
export new RegisterStore();
export const anotherVariable = "TESTTEST";
并像这样导入:
import {RegisterStore, anotherVariable} from './stores/RegisterStore';
根据您上次的查询:
否
export default new RegisterStore() AND
export default const RegisterStore = new RegisterStore() are equivalent?
也不等价。
首先 export default const RegisterStore = new RegisterStore()
抛出错误,因为 RegisterStore
已经被声明为 class 而你又用 const 声明它。
其次:
export default const NewRegisterStore = new RegisterStore()
也是错误的,因为默认导出必须以匿名形式导出,或者必须在导出之前先声明变量。
对于你的例子,它应该是这样的:
let NewRegisterStore; export default NewRegisterStore = new RegisterStore();
所以:
export default new RegisterStore() AND
let NewRegisterStore; export default NewRegisterStore = new RegisterStore(); are equivalent
请详细阅读 "named export" 和 "export default" here
我正在查看 this 代码,其中 class 实例以有点奇怪的方式导出。
提供截图。导出如下:
class RegisterStore {
@observable success = false
@observable failure = false
@observable errors = {}
...
}
export default new RegisterStore()
export { RegisterStore }
并在index.js中导入如下:
import registerStore from './stores/RegisterStore'
...
const stores = {
registerStore
...
}
为什么第一个代码末尾有两个导出?是
export default new RegisterStore()
AND
const NewRegisterStore = new RegisterStore(); export default NewRegisterStore
等价于 ?
没有export default new RegisterStore() and export { RegisterStore }
不相等。在 export { RegisterStore }
中,您将 class 作为导出对象的一部分导出,而在 export default new RegisterStore()
中,您将导出 class.
更进一步。 export default new RegisterStore()
应该足以正常工作。除非您不想从同一个文件导入多个变量,否则再次导出行是无用的。在那种情况下,它就像:
export new RegisterStore();
export const anotherVariable = "TESTTEST";
并像这样导入:
import {RegisterStore, anotherVariable} from './stores/RegisterStore';
根据您上次的查询: 否
export default new RegisterStore() AND
export default const RegisterStore = new RegisterStore() are equivalent?
也不等价。
首先 export default const RegisterStore = new RegisterStore()
抛出错误,因为 RegisterStore
已经被声明为 class 而你又用 const 声明它。
其次:
export default const NewRegisterStore = new RegisterStore()
也是错误的,因为默认导出必须以匿名形式导出,或者必须在导出之前先声明变量。
对于你的例子,它应该是这样的:
let NewRegisterStore; export default NewRegisterStore = new RegisterStore();
所以:
export default new RegisterStore() AND
let NewRegisterStore; export default NewRegisterStore = new RegisterStore(); are equivalent
请详细阅读 "named export" 和 "export default" here