Сборник рассказов не показывает стили

У меня есть компонент диалога, который использует диалог 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 был первоначально создан для улучшения интерактивности веб-страниц.


8
7 437
3

Ответы:

Решено

Вам нужно будет импортировать любые стили, которые вы используете в App.js, глобально в Storybook, импортировав их в .storybook/preview.js (создайте файл, если он еще не существует).

Каждый компонент в React является автономным — ваш компонент DialogModal не получит стилей, потому что в Storybook он не отображается в вашем компоненте App (куда вы импортируете свои стили).

Чтобы имитировать ваше приложение при использовании Storybook, вы импортируете css в файл preview.js.

Документы:

Чтобы контролировать способ отображения историй и добавлять глобальные декораторы и параметры, создайте файл .storybook/preview.js. Это загружается в Вкладка «Холст», iframe «предварительного просмотра», который отображает ваши компоненты в изоляция. Используйте файл preview.js для глобального кода (например, для импорта CSS или JavaScript mocks), который применяется ко всем историям.


TL;DR

импортируйте свои стили в .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