我有一個使用原子設計方法的React應用程序。我的組件的組織,像這樣:React原子設計:組件的組織
components
|--Atoms
| |--Header
| | |--index.js
| | |--index.test.js
| | |--index.stories.js
| |--index.js
|--index.js
在Header/index.js
,我做組件的默認出口。在Atoms/index.js
,我出口的所有組件,就像這樣:
export Header from './Header'
在components/index.js
我導出所有層,像這樣:
export * from './Atoms'
export * from './Moleclues'
如果我需要另一個組件中使用的部件,我需要它從components
像這樣:
import Header from './../..'
在我的測試中,我別名'./../..'
返回一個模擬組件,因此這樣我可以Ø只能測試當前正在測試的組件。
到目前爲止,這種模式一直運行良好。不過,我意識到存在某種循環依賴。我知道這是因爲,當我運行我的故事書應用程序時,某些容器正在導入某些組件,並且該組件將返回未定義的,所以容器將引發錯誤。
這隻發生在一個特定的容器中,並且只發生在我的故事書應用程序中。我無法弄清楚爲什麼這個容器特別決定失敗,爲什麼只在我的故事書應用程序中,所以我推測這是因爲循環依賴。但是,我想知道如何保持所有組件導入爲靜態(即讓它們以相同的方式讀取,以便可以在webpack中繼續使用它們),同時保持乾淨的目錄結構。
謝謝!
你好,你確定你正在從index.js導出你的組件嗎?從「module」輸出*不通過默認輸出,因此返回undefined。請參閱:https://developer.mozilla。org/en-US/docs/Web/JavaScript/Reference/Statements/export – adz5A
我很確定我正確地做到了。在'Atoms/index.js'中,我輸出所有命名的輸出,所以從'module''輸出*不應該遇到你提到的默認輸出問題。 – abustamam
您好,我仍然不太確定,從我前面引用的文檔中可以看到,爲了重新導出默認模塊,您需要將它轉換爲行:第一次導入默認成員,然後將其重新導出爲命名導出。 – adz5A