Сборник рассказов требует экспорта компонента Ant Design по умолчанию для применения стиля - PullRequest
1 голос
/ 25 октября 2019

Я собираюсь разработать некоторые из моих компонентов React с использованием Ant Design и задокументировать их в сборнике рассказов.

Как сборник рассказов, так и компоненты написаны правильно и работают.

модальный.stories.js

import React from "react";
import { action } from "@storybook/addon-actions";
import { Button } from "@storybook/react/demo";
import { BasicModal } from "./BasicModal";
import { Modal } from "antd"; // IF I REMOVE THIS ANT DESIGN DOESN'T APPLY.

export default {
  title: "Modals"
};

export const basicModal = () => <BasicModal visible={true} />;
export const basicModal2 = () => <Modal visible={true} />; //IF I REMOVE THIS ANT DESIGN DOESN'T APPLY.

BasicModal.tsx

import React, { ReactNode } from "react";
import { Modal } from "antd";
interface BasicModalProps {}

export const BasicModal: React.FC<BasicModalProps> = ({}) => {
  return (
    <Modal
      title="Basic Modal"
      visible={true}
    >
      <p>Some contents...</p>
      <p>Some contents...</p>
      <p>Some contents...</p>
    </Modal>
  );
};

webpack.config.js

const path = require("path");

module.exports = {
    module: {
        rules: [
            {
                loader: 'babel-loader',
                exclude: /node_modules/,
                test: /\.js$/,
                options: {
                    presets: ["@babel/react"],
                    plugins: [
                        ['import', {libraryName: "antd", style: true}]
                    ]
                },
            },
            {
                test: /\.less$/,
                loaders: [
                    "style-loader",
                    "css-loader",
                    {
                        loader: "less-loader",

                        options: {
                            modifyVars: {"@primary-color": "#d8df19"},
                            javascriptEnabled: true
                        }
                    }
                ],
                include: path.resolve(__dirname, "../")
            }
        ]
    }
};

Однако я сталкиваюсь с проблемой применения стилей в modal.stories.js. Если я не включу import { modal } from 'antd' и не экспортирую константу с использованием компонента Modal, мой компонент со стилем own не будет применять к нему стилевое оформление ant.

В приведенном выше примереЯ получаю два мода basicModal и basicModal2, стилизованные под муравейник. Но если я закомментирую basicModal2, basicModal вернется к стилю CSS по умолчанию.

Есть ли способ исправить это, не добавляя компонент Ant Design по умолчанию в каждую историю?

1 Ответ

1 голос
/ 25 октября 2019

Импорт antd стилей import 'antd/dist/antd.css'; в файле config.js сборника рассказов:

// @ .storybook/config.js 
import { configure } from '@storybook/react';
import 'antd/dist/antd.css';

function loadStories() {
  const req = require.context('stories', true, /\.stories\.js$/);
  req.keys().forEach(filename => req(filename));
}

configure(loadStories, module);

См. Поддержка CSS в storybook документах.

...