Storybook 需要导出默认的 Ant Design 组件才能应用样式

Storybook requires default Ant Design component to be exported for styling to be applied

我希望使用 Ant Design 设计我的一些 React 组件并将它们记录在 Storybook 中。

故事书和组件均已正确编写并正常运行。

modal.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 design 样式。

在上面的示例中,我得到了两个模态框 basicModalbasicModal2,它们都由 ant-design 设置了样式。但是,如果我注释掉 basicModal2basicModal 将恢复为默认的 CSS 样式。

有没有办法在不在每个故事中添加默认的 Ant Design 组件的情况下解决这个问题?

在故事书的 config.js 文件中导入 antd 样式 import 'antd/dist/antd.css';

// @ .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);

请参阅 storybook 文档中的 CSS Support

故事书 v6

进入(或创建).storybook/preview.js 并将 import 'antd/dist/antd.css'; 添加到顶部。


例子.storybook/preview.js

import 'antd/dist/antd.css';

export const parameters = {
    actions: { argTypesRegex: '^on[A-Z].*' },
};