У меня есть компонент диалога, который использует диалог Primereact внутри. Когда я делаю сборник рассказов для того же, пользовательская кнопка css для импортируется, поскольку она импортируется внутри dialog.jsx. Но css диалога Primereact по умолчанию не загружается и не отображается в сборнике рассказов. Хотя он загружается в моем приложении React.
dialogComp.jsx
import { Dialog } from "primereact/dialog";
const DialogComp = (props) => {
return (
<Dialog
className = "dialog-modal"
header = {props.header}
visible = {true}
>
{props.children}
</Dialog>
);
};
export default DialogModal;
dialog.storybook.js
import React from "react";
import DialogModal from "./dialogComp";
import { addDecorator, addParameters } from "@storybook/react";
import { Store, withState } from "@sambego/storybook-state";
import { store } from "./../../utils/storyStore";
const DialogModalComp = (props) => {
return [
<div>
<DialogModal
header = "Dialog Modal"
displayModal = {true}
>
Modal content
</DialogModal>
</div>,
];
};
addDecorator(withState());
addParameters({
state: {
store,
},
});
export default {
title: "dialog",
};
export const DialogModalComponent = () => DialogModalComp;
сборник рассказов --- main.js
module.exports = {
"stories": [
"../src/**/*.stories.mdx",
"../src/**/*.stories.@(js|jsx|ts|tsx)"
],
"addons": [
"@storybook/addon-links",
"@storybook/addon-essentials",
"@storybook/preset-create-react-app"
]
}
Я что-то упустил в конфигурации?
🤔 А знаете ли вы, что...
JavaScript был первоначально создан для улучшения интерактивности веб-страниц.
Вам нужно будет импортировать любые стили, которые вы используете в App.js
, глобально в Storybook, импортировав их в .storybook/preview.js
(создайте файл, если он еще не существует).
Каждый компонент в React является автономным — ваш компонент DialogModal
не получит стилей, потому что в Storybook он не отображается в вашем компоненте App
(куда вы импортируете свои стили).
Чтобы имитировать ваше приложение при использовании Storybook, вы импортируете css в файл preview.js
.
Чтобы контролировать способ отображения историй и добавлять глобальные декораторы и параметры, создайте файл .storybook/preview.js. Это загружается в Вкладка «Холст», iframe «предварительного просмотра», который отображает ваши компоненты в изоляция. Используйте файл preview.js для глобального кода (например, для импорта CSS или JavaScript mocks), который применяется ко всем историям.
импортируйте свои стили в .storybook/preview.js
import "../src/index.css";
export const parameters = {
actions: { argTypesRegex: "^on[A-Z].*" },
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/,
},
},
};
Если вы используете сборник рассказов и эмоции, а также реализуете глобальные стили или тематику, вы можете добавить декоратор в .storybook/preview.js следующим образом: Я использую приложение Create React, поэтому использую jsxImportSource.
/** @jsxImportSource @emotion/react */
import { Global } from '@emotion/react'
import { GlobalStyles } from '../src/styles'
const withGlobalProvider = (Story) => (
<>
<Global styles = {GlobalStyles} />
<Story />
</>
)
export const decorators = [withGlobalProvider]
Дополнительную информацию можно найти на: https://storybook.js.org/docs/react/essentials/toolbars-and-globals#global-types-and-the-toolbar-annotation