reactjs - Material-UI injectionFirst 不适用于故事书
问题描述
我正在使用带有 styled-components 的 material-UI 并根据文档,为了覆盖材质样式,需要添加此injectFirst
属性:
但是,当尝试在 storybook 环境中使用这种方法时,它不能按预期工作,并且 JSS 样式仍然在样式组件之后注入。
.storybook/config.js:
import React from 'react'
import {configure, addDecorator} from '@storybook/react'
import { StylesProvider } from '@material-ui/styles'
addDecorator(storyFn => (
<StylesProvider injectFirst>
{ storyFn() }
</StylesProvider>
));
const req = require.context('../packages', true, /.story.js$/);
function loadStories() {
req.keys().forEach((filename) => req(filename));
}
configure(loadStories, module);
解决方案
我没有使用 styled-components,但是对于带有 Storybook v6 的 MUI + CSS Modules,下面的配置可以做到,所以 MUI 样式不会覆盖我们自己的样式。
.storybook/preview.js:
import { StylesProvider } from '@material-ui/styles'
export const decorators = [
(Story) => (
<StylesProvider injectFirst>
{Story()}
</StylesProvider>
),
]
我们已经parameters
从另一个附加组件中退出了该文件中的配置,我只是将上面的代码放在那里没有问题。您可能还需要在那里导入 React,具体取决于您的设置方式(我们没有)。
推荐阅读
- firebase - 返回firebase颤动中的集合计数时出错?
- python-3.x - Flask-Login:AttributeError:“int”对象没有属性“is_authenticated”
- r - R中的“打印”样式到字符串的转换
- python-3.x - 将 DataFrame 索引('datetype')转换为分类变量
- python - 从陀螺仪串口分离数据,Python
- c# - 如何在 .razor.cs 文件后面注入 blazor 代码?以 IJSRuntime 为例
- angular - Angular Material:无法拖放到动态创建的下拉列表中
- javascript - .scrollIntoView 将页面稍微向左移动
- node.js - Keycloak-connect with express,有没有简单的Keycloak登录方法
- java - 你如何在 Java 8 Instant 中表示 MS-DTYP `DATETIME`?