javascript - 使用 Styled-Components 重新创建 HTML/CSS 行为
问题描述
我在 React 应用程序中使用 Styled-Components 时遇到了一个相当烦人的问题。HTML 元素的类名非常重要,样式组件的动态性(通过 props 传递)也是如此。因此,两者都使用很重要。
tl;博士我想在 CSS(而不是HTML)中使用类名,而不必创建空组件或其他东西。
我有一个具有动态类名的类,让我们保持“style-123”,其中“123”通过状态动态更改,并且对于与当前设置进行奇偶校验很重要。(IMO,类名的动态特性阻止了解决方案。)“style-123”类名用于其他 HTML 元素,但它本身不是组件,因此不应显示为 HTML 元素。
我有一个类名为“component-a”的组件(“ComponentA”)。该组件的 HTML 应如下所示:
<div class="component-a">
HELLO
</div>
其样式(在开发工具中)应如下所示:
.style-123 .component-a {
margin-left: -2%;
}
我们现在看到添加的类(“style-123”)。这应该是最终结果。
HTML 的一般结构如下:
<div class="name-whatever style-123 another-classname">
<div>
<div class="component-a">
</div>
</div>
</div>
问题
我似乎无法将“component-a”隔离为“ComponentA”的HTML类名,同时.style-123 .component-a
通过 styled-components 应用 CSS。为了使 HTML 具有独立的类名,组件 (JSX) 需要:
<ComponentA className={'component-a'}/>
和样式化的组件:
const ComponentA = styled.div`
&.component-a {
color: red;
}
`
这是我知道如何将 JSX 中的组件与其对应的样式组件链接起来的唯一方法。
我不能做:
<ComponentA className={'component-a'}/>
和样式化的组件:
const ComponentA = styled.div`
&.style-123 .component-a {
color: red;
}
`
因为这不会应用样式,因为存在类名不匹配。
在过去的几个小时里,我尝试了许多 SASS 的组合,所有的 & 和箭头和加号等。我希望这通过 styled-components 是可行的,因为我需要声明类名并具有动态的类名以及 CSS 属性和值,所有这些都通过 props 传递。如果有另一种不使用样式组件但保持这种活力的解决方案,我对此持开放态度。
谢谢你的时间。
解决方案
推荐阅读
- python - 以毫秒为单位将时间戳传递给由 SQLite3 支持的 SQLAlchemy
- javascript - JavaScript 函数在 Django 上不起作用
- python - 退出程序后输入数据不会立即保存
- android - 使用 RecyclerView 删除 Sqlite 中的行
- reactjs - 在 react-select 中排序搜索结果
- c - “正常”创建数组和使用 malloc 之间的区别
- c# - 全部加载后更新主用户界面
- c - 尝试从 argv[] 读取文件时出现核心分段错误
- ios - (C) 自由函数中的 `[[NSDate date] timeIntervalSince1970]` 总是返回相同的值
- angular - Angular 查询构建器模块如何为嵌套属性创建查询