文件
Storybook 文件

設定擴充功能並與其通訊

擴充功能 API 專為自訂設計。它為擴充功能作者提供不同的方式來設定 Storybook 並與使用者的 Storybook 通訊。讓我們看看這些是什麼以及它們建議的使用案例。

預設設定

預設設定將設定的負擔從使用者轉移到擴充功能。預設設定選項是全域的,可以從 NodeJS 存取。它們非常適合預先設定 Webpack 載入器、Babel 外掛程式和其他程式庫或框架特定的設定。

例如,許多程式庫要求應用程式被一個 Provider 包裹,該 Provider 向樹狀結構下方的元件提供資料。預設設定可以描述諸如自動新增包裝器之類的行為,而無需使用者進行任何手動設定。如果使用者安裝了具有預設設定的擴充功能,則該擴充功能可以指示 Storybook 將所有 story 包裹在 Provider 中。這讓使用者只需一行設定即可開始在 Storybook 中使用您的程式庫!

有關預設設定的更多資訊,請參閱:撰寫預設設定擴充功能

包裝每個 story 的機制稱為 Storybook 裝飾器。它們允許您使用額外的渲染功能或提供資料來擴充 story。

參數

參數在瀏覽器中可用,非常適合在全域、元件層級或 story 層級設定擴充功能行為。

例如,Pseudo States 擴充功能使用參數來啟用各種虛擬狀態。使用者可以提供全域預設值,然後在 story 層級覆寫它們。

使用 useParameter 勾子來存取擴充功能內的參數值。

export const Hover = {
  render: () => <Button>Label</Button>,
  parameters: { pseudo: { hover: true } },
};

通道

通道使用與 NodeJS EventEmitter 相容的 API,啟用管理器和預覽窗格之間的雙向通訊。您的擴充功能可以插入特定通道並回應這些事件。

例如,Actions 擴充功能會捕獲使用者事件並在面板中顯示其資料。

使用 useChannel 勾子來存取擴充功能內的通道資料。

如需完整範例,請查看 storybookjs/addon-kit/withRoundTrip.ts