在 Storybook v6.4 中加载 css 模块类时出现问题

2024-02-06

我在让故事书与我的 Gatsby 项目中的 css 模块完美配合时遇到问题。我能够渲染按钮组件,但它没有添加任何我的样式。在检查元素时,我只得到undefined undefined从下面的代码。

按钮.jsx

import React from "react"
import * as css from "./style.module.css"

const Button = ({ variant = "button", type, value = null }) => {
  const baseOfVariant = () => {
    if (variant === "input") {
      return (
        <input
          type={type}
          value={value}
          className={`${css.button} ${css.clear_button}`}
        />
      )
    }
    return (
      <button type={type} className={`${css.button} ${css.submit_button}`}>
        {value}
      </button>
    )
  }
  return baseOfVariant()
}

export default Button

按钮.stories.jsx

import React from "react"
import Button from "./button"

export default {
  title: "Button",
  component: Button,
}

export const Template = args => <Button {...args} />

export const ButtonRegular = Template.bind({})
ButtonRegular.args = {
  variant: "button",
  value: "Click Me",
  type: "submit",
}

main.js

module.exports = {
  stories: ["../src/**/*.stories.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"],
  addons: ["@storybook/addon-links", "@storybook/addon-essentials"],
  core: {
    builder: "webpack5",
  },
}

我的 devDeps 中的故事书内容

"devDependencies": {
    "@babel/core": "^7.14.6",
    "@babel/polyfill": "^7.12.1",
    "@storybook/addon-actions": "^6.4.0-alpha.2",
    "@storybook/addon-essentials": "^6.4.0-alpha.2",
    "@storybook/addon-links": "^6.4.0-alpha.2",
    "@storybook/addon-viewport": "^6.4.0-alpha.2",
    "@storybook/builder-webpack5": "^6.4.0-alpha.2",
    "@storybook/manager-webpack5": "^6.4.0-alpha.2",
    "@storybook/react": "^6.4.0-alpha.2",
    "babel-loader": "^8.2.2",
    "prettier": "2.2.1",
    "resize-observer-polyfill": "^1.5.1"
  }

Gatsby 需要使用以下语法导入 css 模块:

import * as css from "./style.module.css"

Storybook 仅识别以下语法:

import css from "./style.module.css"

这是因为 Gatsby 和 Storybook 不使用相同的导入约定。幸运的是,您可以通过配置 Storybook css 模块导入机制.storybook/main.js file.

const path = require("path")

module.exports = {
  // You will want to change this to wherever your Stories will live
  stories: ["../src/**/*.stories.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"],
  addons: ["@storybook/addon-links", "@storybook/addon-essentials"],
  core: {
    builder: "webpack5",
  },
  webpackFinal: async config => {
    // Prevent webpack from using Storybook CSS rules to process CSS modules
    config.module.rules.find(
      rule => rule.test.toString() === "/\\.css$/"
    ).exclude = /\.module\.css$/

    // Tell webpack what to do with CSS modules
    config.module.rules.push({
      test: /\.module\.css$/,
      include: path.resolve(__dirname, "../src"),
      use: [
        {
          loader: "style-loader",
          options: {
            modules: {
              namedExport: true,
            },
          },
        },
        {
          loader: "css-loader",
          options: {
            importLoaders: 1,
            modules: {
              namedExport: true,
            },
          },
        },
      ],
    })
    // Transpile Gatsby module because Gatsby includes un-transpiled ES6 code.
    config.module.rules[0].exclude = [/node_modules\/(?!(gatsby)\/)/]
    // use babel-plugin-remove-graphql-queries to remove static queries from components when rendering in storybook
    config.module.rules[0].use[0].options.plugins.push(
      require.resolve("babel-plugin-remove-graphql-queries")
    )
    return config
  },
}

通过上述配置,Storybook 现在接受此导入合成并button.jsx样式正确。

import * as css from "./style.module.css"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Storybook v6.4 中加载 css 模块类时出现问题 的相关文章

  • 如何在create-react-app中注入没有REACT_APP前缀的dotenv变量?

    我有一个项目要从旧版 React 应用程序迁移到标准版create react app一个 未弹出 在遗留项目中 它手动加载 env文件与dotenv and dotenv expand并通过webpack注入DefinePlugin cr
  • 在 React 中使用 .less 文件

    我正在尝试将 less 文件与极简主义 React 应用程序一起使用 使用创建反应应用程序 我已经添加less and less loader to my 包 json以及我的模块规则webpack config js文件 然而 类引用并未
  • 在 Chrome 中为

    我已经看到这个问题多次出现 但没有任何明确的解决方案 我正在加载一个简单的视频
  • 如何对多行文本中的每一行应用填充?

    我已将背景颜色应用于 span 标签 也有左和右padding设置在它上面 问题是 padding仅适用于左侧 开始 和右侧 结束 span 而不是当文本换行时每行的左侧 开始 和右侧 结束 我该如何应用左和右padding to the
  • HTML 表格 - 固定列宽和多个可变列宽

    我必须建立一个有 5 列的表 表格宽度是可变的 内容宽度的 50 有些列包含固定大小的按钮 因此这些列应该有一个固定大小 例如 100px 有些列中有文本 所以我希望这些列具有可变的列宽 例如 Column1 tablewidth sum
  • 使用 React 渲染来自 Express 的 Flash 消息

    我已经搜索了很多 但一直无法找到一种简单的方法来从 Express 获取 Flash 消息并在 React 中渲染它们 我需要访问 Express 服务器上的数据 但是存储这些数据并将其传递给 React 的最佳方式是什么 我正在考虑传递一
  • 更改所选元素的颜色 - React

    我是反应新手 我试图更改所选的一个特定 li 的颜色 但它会更改所有 li 的颜色 此外 当单击另一个 li 时 我希望第一个 i 不再处于活动状态 这是代码 http codepen io polinaz pen zNJKqO http
  • css 适用于 Firefox/Chrome,但不适用于 IE

    我有这个 HTML 和 css 在 chrome firefox 中工作正常 但在 IE 上 标题布局超出了位置 并且悬停时未显示子菜单 您能帮忙吗
  • 有没有办法改变输入类型=“日期”格式?

    默认情况下 输入type date 显示日期为YYYY MM DD 问题是 是否可以将其格式强制为 DD MM YYYY 无法更改格式 我们必须区分有线格式和浏览器的表示格式 接线格式 The HTML5日期输入规范 https www w
  • Redux 减速器的副作用

    Redux 减速器应该没有副作用 但是 如果某个操作应该触发浏览器中文件的下载 其中内容基于商店的状态 该怎么办 这当然应该算作副作用吗 像下面这样的方法可以吗 还是我应该寻找替代方法 case SAVE GRID const json s
  • React App 中的图像损坏

    我正在尝试访问 React 应用程序中的图像 当我运行代码时 我在网页上看到一个损坏的图像图标 我不确定我是否正在访问图像的正确路径 我的代码如下 import React Component from react class Header
  • 将渐变应用于 Material UI 的主题背景

    我试图将 MuiTheme 的默认背景颜色设置为渐变 我有以下代码 export const theme createMuiTheme palette type dark background default linear gradient
  • Twitter bootstrap:居中缩略图

    我有一个缩略图列表 它们有固定的尺寸 我希望连续缩略图的数量随着窗口的宽度而变化 使用 Twitter Bootstrap 这很容易 http jsfiddle net charlesbourasseau 5WvAL http jsfidd
  • 如何在 font Awesome 图标链接下方添加添加文本?

    我正在尝试在我的 Blogger 模板中的 font awesome Icons 下添加一些文本 这是我想要实现的目标的图像 我想要实现的外观图片 https i stack imgur com BVYlh png 但到目前为止我已经做到了
  • 样式标签中的源映射是否有效?

    我在标签和源映射中遇到 CSS 问题 为了缩短项目的加载时间 我改变了将 CSS 放入 HTML 的方式 将其改为 h1 Source maps working wonderfully h1 进入这个
  • 是否可以使用 Flying Saucer (XHTML-Renderer) 将 css 解析为类路径资源?

    我正在尝试将资源打包到 jar 中 但我无法让 Flying Saucer 在类路径上找到 css 我无法轻松构建 URL 来无缝解决此问题 https stackoverflow com questions 861500 url to l
  • 更快地开发和测试打印样式表的方法(避免每次都进行打印预览)?

    这是我现在的流程 保存对 print css 的更改 打开浏览器并刷新页面 右键单击并选择 打印 gt 打印预览 Firefox 但实际上是任何浏览器 第三步让我烦恼 我想知道是否可以通过插件或其他东西将其从流程中删除 只需选择以打印媒体形
  • Firefox Placeholder Before CSS 选择器不起作用

    我使用的是最新的firefox 30 0 我正在尝试在必填字段的占位符之前插入红色字体真棒星号 我在 Chrome 中工作没问题 但我在 FF 和 上遇到问题 这是一个说明我的问题的代码笔 http codepen io anon pen
  • 当百分比填充定义元素高度时忽略 max-height

    The max height当内部填充大于最大高度值时 属性值似乎被忽略 例如 在元素上设置此类会导致最大高度被忽略 max height ignored height 0 or auto makes no difference max h
  • HTML 元素的默认背景颜色是什么?白色还是透明?

    我只是被一个简单的问题困住了 想弄清楚 HTML 元素的默认背景颜色是什么 是白色的还是透明的 默认背景颜色是透明的 看这里 https developer mozilla org en docs Web CSS background co

随机推荐

  • 膨胀异常-膨胀文本视图时出错

    我有这个主要活动 我已在登录按钮上调用了验证方法 但是 当我单击该按钮时 我没有收到错误消息 并且我的应用程序崩溃了 任何帮助 将不胜感激 谢谢 这是我的 MainActivity Java 类 public class MainActiv
  • 强制 WCF 代理生成别名前缀

    为了符合客户端架构 我一直在尝试生成一个 WCF 客户端代理 该代理能够序列化为具有如下所示根节点的结构
  • 网站要求在 MVC 控制器上“需要身份验证”,但不要求在其他控制器上进行“身份验证”

    我有一个 asp net C MVC 网站 它使用 SimpleAuthentication 和表单身份验证 一切正常 需要人们登录才能访问页面 但是 我有一个名为 ReportsController 的控制器 每当您访问此控制器中操作的
  • 如何使用 lambda 函数更改 pandas df 中任意列的名称?

    有没有办法使用更改 pandas 数据框中的某些列名称lambda 但不是所有的 例如 假设该数据框的列名称为osx centos ubunto windows 在此数据框中 我想将所有列名称替换为附加的列名称x 所以在这种情况下 我可以通
  • 为什么我在 iOS 8 模拟器上收到这个 clang 错误:_fwrite$UNIX2003

    我已将新的 iOS 8 下载到我的手机中 并将最新的 Xcode 下载到我的 Mac 上 一切正常 但在加载并尝试新的 iPhone 6 plus 模拟器后 当我尝试 iPhone 4s 或 5 模拟器 适用于 5s 时 出现以下错误 Un
  • 如何处理 Elastic beanstalk 部署,使其仅上传更改的文件

    由于我是 AWS 新手 因此我在使用 Elastic beanstalk 时遇到了问题 我设置了一切并部署了第一个应用程序 到目前为止一切顺利 但是当我推送另一堆更改时 它只是替换了整个文件 而不仅仅是更改了的文件 在开发过程中 本地主机和
  • 我无法通过鼠标事件添加灯光

    我无法在 Three js 场景中使用 keydown 事件添加灯光 我有以下功能 function putLight light new THREE SpotLight 0xffffff light position set 10 80
  • osmdroid MapTileDownloader 现在显示 403 禁止作为 HTTP 响应

    我已经成功使用 osmdroid android 4 1 jar 一段时间来在我的应用程序中显示 OSM 地图图块 现在 从昨天开始 我根本没有显示任何图块 当我将手机连接到 PC 时 我在日志中看到 403 禁止响应 我使用 Androi
  • 使用 CSS 使图像大小为容器高度的 100%

    我环顾四周 阅读了一个又一个的解决方案 并尝试了各种方法 但从未让它正常工作 我希望图像最终根据浏览器窗口的当前高度动态调整大小 目前使用图像下方的代码是原始高度 最终比浏览器窗口大 导致出现垂直滚动条 注意 请记住 我希望使用相同数量的表
  • 为什么使用 IN(子查询)的查询比使用 IN(离散列表)的查询花费更长的时间

    这一直困扰着我 为什么这个查询 SELECT FROM TABLE WHERE value IN SELECT val FROM OTHER TABLE WHERE date lt 2014 01 01 运行速度比顺序运行此查询慢几个数量级
  • bash脚本..复制文件而不覆盖[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想知道是否可以根据原始名称将文件复制 移动到目的地 基本上 我有一个 mail 文件夹 其中有几个子文件夹 例如 cur 和 new 等 然后我在
  • 计算 PHP 类的创建次数

    我有一个 php 类 我为其创建了多个实例 我想计算一下我创建该对象的次数 有没有办法知道我已经创建了 3 个 myObjects 您可以创建一个static http php net manual en language oop5 sta
  • 无法安装自制程序

    我有一台相当新的 macbook pro 我只是尝试按照他们网站上的说明安装自制程序 usr bin ruby e curl fsSL https raw githubusercontent com Homebrew install mas
  • NSString 属性是复制还是只读?

    我看到很多讨论说我应该使用copyNSString 属性 因为它会阻止其他人在我背后更改它 但那我们为什么不直接设置readonly财产呢 Update 谢谢回答我的问题 但问题是 对于 NSString 属性 你总是不希望别人修改它 对吧
  • Swift UITableViewAutomaticDimension 不起作用

    我的 Swift 项目中有一张这样的表 var tableView UITableView tableView UITableView tableView dataSource self tableView delegate self ta
  • 如何在android中的通知中添加按钮?

    我的应用程序播放音乐 当用户通过从屏幕顶部 或通常从平板电脑屏幕的右下角 滑动打开通知屏幕时 我想向他们展示一个按钮来停止当前播放的音乐并在以下情况下重新启动 他们要 我不打算将小部件放在用户的主屏幕上 而只是放在通知中 我怎样才能做到这一
  • 如何使用无法删除的值初始化输入,但允许用户在输入后写入

    我正在使用 Angularjs 和 bootstrap 创建一些表单 我想使用无法删除的默认值来初始化输入 我不想使输入只读或禁用它 我想用一些无法删除的文本初始化输入 但让用户在该文本后写入 Example 代码 xyz 用户想要写入的任
  • 在新版本的 matplotlib 中使用 twinx 时定义宽高比

    当前版本的 matplotlib 不允许box forced再说了 我应该怎么做同样的事情answer https stackoverflow com a 24742133 11840592 我正在使用 matplotlib 3 1 0 当
  • 如何在CSS中倾斜虚线边框?

    我正在尝试使用 CSS 为邮件应用程序设计一个信封 我的客户想要这种方式的虚线边框 如何用 CSS 边框达到这种效果 您可能需要稍微调整一下颜色 enveloppe padding 1em border 16px solid transpa
  • 在 Storybook v6.4 中加载 css 模块类时出现问题

    我在让故事书与我的 Gatsby 项目中的 css 模块完美配合时遇到问题 我能够渲染按钮组件 但它没有添加任何我的样式 在检查元素时 我只得到undefined undefined从下面的代码 按钮 jsx import React fr