在 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 模块类时出现问题 的相关文章

  • 使用 bootstrap 将搜索图标放入文本框中

    我默认使用引导程序 文本框占据列的全宽 我想将搜索图标放在文本框的末尾 我的代码是这样的 div class container div class row div class form group col lg 4 div div div
  • 如何使用CSS将背景图像放入选择选项标签中

    我有一个从 json 响应接收的国家 地区下拉列表 并且想要在国家 地区名称旁边添加相应的国家 地区国旗图标 也从 json 响应获取图像 我已经尝试了不同的 jQuery 和 bootstrap 插件 但他们所做的是破坏我以前的选择框样式
  • 监听浏览器宽度以进行响应式网页设计?

    我正在努力使我的网站适合移动设备 我想知道浏览器窗口的大小 以便当它比 728px 窄时我可以执行某些操作 而当它大于 728px 时我可以执行其他操作 这必须考虑到调整 PC 上的窗口大小以及在手机中从纵向模式更改为横向模式 如何才能做到
  • React + Semantic-UI:在 UI MODAL 中使用表单

    在没有 React 的普通旧 Semantic UI 中 我已经能够毫无问题地将表单放入 Modal 中 使用 Semantic UI React 版本 我能够在模态中显示表单 但它并没有按照我期望的方式工作 例如 模态框显示后 模态框内的
  • 自定义 WP 主题时,我应该将导航栏放在“”标签之前还是之后?

    我正在通过制作子主题来自定义 WP 主题 我将 Bootstrap 中的导航栏放入子主题目录中的 header php 文件中 但是 我不确定在哪里放置导航栏代码 我可以把它都放在前面and之后标记成功 例如 无论我选择哪一个 导航栏都显示
  • 删除

    好的 我有一个小菜单栏 菜单内的三个元素还有更多的子菜单 但是菜单栏中的元素之间有不必要的间距 而且我创建的子菜单有不必要的背景宽度 我在代码中将其涂成白色以使读者理解 由于这种不必要的宽度 即使鼠标悬停在不可见的宽度上 在本例中为白色 本
  • 渲染作为 Prop 传入的 Component

    我怎样才能渲染一个StyledComponent它是作为道具传入的吗 我正在传递一个Spinner组件到我的BarComponent作为渲染的道具 我尝试使用 this props icon in my BarComponent在下面的示例
  • 可以将position:absolute元素设为粘性吗?

    In CSS position sticky使元素能够显示position static行为 即 它采用文档流中的默认位置 直到到达某个滚动位置 然后采用position fixed行为 那么 这是否意味着我们不能使用position st
  • 在 Android 上禁用标注(上下文菜单)

    在网络应用程序中 我需要禁用移动浏览器在触摸并按住 长按 触摸目标 例如 img 或链接 我已经在使用了 webkit touch callout none 它在 iPhone 和 iPad 上运行良好 但似乎不适用于 Android 在
  • div 中的中心文本?

    我有一个div 30px高和500px宽的 这div可以包含两行文本 一行在一行 并相应地设置样式 填充 但有时它只包含一行 我希望它居中 这可能吗 要水平居中 请使用text align center 要垂直居中 只能使用vertical
  • CSS 继承、别名和其他很酷的东西

    有一天 我随机浏览网页 发现了一些程序 可以让你编写 CSS 别名和其他很酷的东西 我现在不记得了 举个例子 我记得你可以这样做 myclass background color red greenfont 其中 greenfont 在其他
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • 如何通过单击链接来更改 div 的内容?

    这是我的网页的 修改后的 jsfiddle 它还有很多 而且定位是正确的 与此相反 http jsfiddle net ry0tec3p 1 http jsfiddle net ry0tec3p 1 a href class btn1 st
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • CSS 到底如何计算相对尺寸

    我想更好地理解某些 CSS 行为 这与具体问题无关 我只是在调试网站时遇到的 让我们在固定位置的 div 中放置一个全宽图像 div img style width 100 src https via placeholder com 150
  • 具有 100% 高度行和 Internet Explorer 9 的表格

    我有以下示例 div style height 150px background color AAAAFF div
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用

随机推荐

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

    我有这个主要活动 我已在登录按钮上调用了验证方法 但是 当我单击该按钮时 我没有收到错误消息 并且我的应用程序崩溃了 任何帮助 将不胜感激 谢谢 这是我的 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