You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

react-beautiful-dnd项目中styled-components样式需包裹JS括号才生效原因求助

问题原因解答

该问题和react-beautiful-dnd无关,是styled-components的标签模板字符串语法使用错误导致的:

  • styled-components通过标签模板字符串语法解析样式,模板中未被${}插值包裹的内容会被当做纯CSS文本直接输出。你直接在模板中写border-color: "orange";、height: "100px";时,JS的字符串引号会被直接保留到最终生成的CSS规则中,浏览器无法识别带引号的颜色值、长度值,因此样式失效。
  • 使用${"orange"}这种写法时,插值语法会将JS字符串的内容orange插入到样式中,最终生成的CSS是border-color: orange;,符合CSS语法规范,因此可以正常生效。

修正后的样式代码

固定的CSS属性值不需要加${}插值,也不要额外加JS层面的引号,修正后代码如下:

import styled from 'styled-components'

export const DroppableContainer = styled.div`
    display: flex;
    overflow: auto;
    border: 1px solid;
    border-color: orange;
    width: 50%;
    height: 100px;
`
export const DraggableItem = styled.div`
    font-size: 60px;
    flex: auto;
    text-align: center;
    background-color: ${({dragging}) => dragging ? "rgb(11, 138, 79)" : "rgb(156, 186, 172)"};
`

只有当你需要传入JS变量、通过表达式动态计算样式值的时候,才需要用到${}插值语法。


内容的提问来源于stack exchange,提问作者Matt Nann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:09:03