React-Bootstrap 样式未与故事书一起加载

Posted

技术标签:

【中文标题】React-Bootstrap 样式未与故事书一起加载【英文标题】:React-Bootstrap styles not loading with storybook 【发布时间】:2020-07-12 19:36:07 【问题描述】:

我最近开始在我的 react-typescript 项目中使用 storybook 并遇到了以下问题:

    我的 react-bootstrap 组件没有样式。组件是 已加载但没有样式。我尝试使用样式加载器和 css 加载器在自定义 webpack 配置中,但没有工作。 我正在导入一些本地字体,但字体总是被加载 在字体文件夹中。有没有办法加载字体 /静态/字体目录?我正在使用文件加载器来加载字体。 我有一个 globalStyles.tsx 文件和一个 iconStyles.tsx 文件,我 想在故事板 iframe 中全局包含。什么会 是最好的方法吗?

我正在本地主机上运行故事书。

下面是我的 main.js 和自定义 webpack 配置:

module.exports = 
  stories: ['../src/stories/**/*.stories.[tj]s','../src/stories/**/*.stories.tsx'],
  addons: ['@storybook/addon-actions', '@storybook/addon-links'],
  webpackFinal: async config => 
    config.module.rules.push(
      test: /(?<!.*\.test)\.(ts|tsx)$/,
      use: [
        
          loader: require.resolve('ts-loader'),
        
      ]
    ,
    
      test: /\.ttf$|\.woff$|\.eot$|\.otf$/,
      use: [
        
        loader: 'file-loader',
        options: 
          outputPath: '/static/fonts',
        ,

        ,
      ]

    ,
    
      test: /\.css$/,
      use: ['style-loader', 'css-loader']
    
    );
    config.resolve.extensions.push('.ts', '.tsx');
    return config;
  ,
;

【问题讨论】:

这个运气好吗?已经尝试了所有的答案,但没有运气。 【参考方案1】:

您应该在.storybook/preview.js 中同时导入 Bootstrap CSS 和 JS:

import 'relative/path/to/bootstrap/dist/css/bootstrap.css'
import 'relative/path/to/bootstrap/dist/js/bootstrap.js'

刚刚使用 storybook/react-6.3.7 和 bootstrap-5.1.0 进行了测试。

【讨论】:

好一个,非常简单的解决方案:)【参考方案2】:

您所要做的就是在.storybook/preview.js 中导入您的css 文件,如mentioned in the docs。

【讨论】:

不知道为什么这是最受欢迎的答案。这很明显,并没有回答如何让引导样式与故事书一起使用的问题。 我发现这个问题正是因为我试图在故事书中拥有自己的 react-boostrap 组件并且它们缺乏样式。我给出的答案是在故事书的不和谐频道中向我建议的。它确实解决了我的问题。【参考方案3】:

我没有正式的答案,但也许故事书默认情况下无法识别正在使用引导程序。

我正在做的一个快速解决方法是在 stories.js 文件中添加以下行 import 'bootstrap/dist/css/bootstrap.css'; .它使我能够以适当的样式可视化我的 reactrsap 组件。

【讨论】:

以上是关于React-Bootstrap 样式未与故事书一起加载的主要内容,如果未能解决你的问题,请参考以下文章

故事书未显示样式

画布区域样式的正确方法是故事书

如何在故事书 iframe 上设置 CSS 样式

样式化组件 + 故事书:当我传递新样式时,SVG 图标不会重新渲染

如何更改故事书中的特定元素样式?

为啥 vue-loader 不能与故事书一起使用?