首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在zustand.js中重新导出*和{ default }有什么意义?

在zustand.js中重新导出*和{ default }有什么意义?
EN

Stack Overflow用户
提问于 2022-10-01 18:47:34
回答 1查看 72关注 0票数 0

我正在尝试阅读和理解zustand的源代码,并在index.ts中遇到这段代码。

代码语言:javascript
复制
export * from './vanilla'
export * from './react'
export { default as createStore } from './vanilla'
export { default } from './react'

第3行和第4行有什么意义?我认为这可能是为了允许以这两种方式导入功能。

代码语言:javascript
复制
import create from 'zustand'

这条路

代码语言:javascript
复制
import { create } from 'zustand'

但是第二个import抛出错误:

代码语言:javascript
复制
Module '"zustand"' has no exported member 'create'. Did you mean to use 'import create from "zustand"' instead?

编辑:我知道要正确导入create函数需要做些什么。我只是不明白为什么index.ts需要第3行和第4行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-01 18:53:38

这样做的目的是:

代码语言:javascript
复制
export { default as createStore } from './vanilla'

是-它从该文件中获取默认导出,并在此文件中以名称createStore导出它。

这样做的目的是:

代码语言:javascript
复制
export { default } from './react'

是-它从该文件中获取默认导出,在此文件中,导出为默认导出。

如果没有第3行和第4行,上述情况就不会发生--既不会从vanilla默认导出,也不会在这里重新导出react。(只执行名为export * from的出口再出口)

create不是vanillareact文件中的命名导出,第3行和第4行都不创建名为create的导出,因此不允许import { create } from 'zustand' (试图检索名为create的导出)。

在消费祖站时,要导入香草的默认导出,您需要执行以下操作

代码语言:javascript
复制
import { createStore } from 'zustand';
// this can be renamed when importing with `as` if desired

要导入React的默认导出,需要执行以下操作

代码语言:javascript
复制
import create from 'zustand';
// this can be named whatever you want, since it's a default import

如果第3行和第4行不存在,上述两个代码段都不能工作,因为来自reactvanilla的默认导出不会被重新导出。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73920936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档