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

styled-components无法传递props问题求助

styled-components props传值失效问题及相关疑问

刚上手styled-components,照着官方文档用${(props) => props.variable}的方式传递值,但完全没效果,反复查文档也没解决。

相关代码

Board组件

import { styled } from 'styled-components';
import Box from './Box';

const BOARD = styled.div`
  display: grid;
  grid-template-columns: ${(props) => 'repeat(3, 320px)'};
  grid-template-rows: ${(props) => 'repeat(3, 320px)'};
  gap: ${(props) => props.boxSpacing};
  background-color: black;
  padding: ${(props) => '20px'};
`;

export default function Board(props) {
  console.log(props)
  return (
    <BOARD>
      <Box /><Box /><Box /><Box /><Box /><Box /><Box /><Box /><Box />
    </BOARD>
  );
}

App组件

import { useState } from 'react';
import reactLogo from './assets/react.svg';
import viteLogo from '/vite.svg';
import Board from './components/board/Board.jsx';
import './App.css';


function App() {
  const [count, setCount] = useState(0)
  
  return (
    <>
      <Board boxSpacing={'20px'} />
      <div>
        <a href="https://vitejs.dev" target="_blank">
          <img src={viteLogo} className="logo" alt="Vite logo" />
        </a>
        <a href="https://react.dev" target="_blank">
          <img src={reactLogo} className="logo react" alt="React logo" />
        </a>
      </div>
      <h1>Vite + React</h1>
      <div className="card">
        <button onClick={() => setCount((count) => count + 1)}>
          count is {count}
        </button>
        <p>
          Edit <code>src/App.jsx</code> and save to test HMR
        </p>
      </div>
      <p className="read-the-docs">
        Click on the Vite and React logos to learn more
      </p>
    </>
  )
}

export default App

已尝试的解决方法

  • 在变量前添加$,无变化;
  • 解构props;
  • 尝试多种在App文件中传递值的方式;
  • 移除变量仅保留函数形式(比如直接写死值),这种方式可行,但用变量时就失效。

补充疑问

找到的资料大多是基于类组件的旧内容,官方文档也缺乏新内容,想知道styled-components现在还流行吗?有没有其他替代方案可以实现组件作用域和CSS变量的功能?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:15:25