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

如何用Styled Components实现条件样式?自定义组件为何不生效?

问题解决:你的React Styled-Components没接收到Props的原因

嘿,这个问题其实超简单!你写的styled组件<Header>根本没拿到你传的name props~

看你现在的代码,导出的组件里虽然接收了name参数,但在渲染<Header>的时候,并没有把这个name传递给它。所以styled组件里的${props => (props.name === 'john' ? 'red' : 'blue')}这段逻辑,因为props.name是undefined,只会一直渲染蓝色。

只需要改一行代码,把name props传给<Header>就搞定了:

import React from 'react';
import styled from 'styled-components';
const Header = styled.h1`
  color: ${props => (props.name === 'john' ? 'red' : 'blue')};
`;
// 这里给Header加上name={name}
export default ({ name }) => <Header name={name}>Hello {name}!</Header>;

如果之后有多个props需要传递,也可以用解构的方式一次性传过去,更简洁:

export default (props) => <Header {...props}>Hello {props.name}!</Header>;

这样当你传入name="john"的时候,标题就会变成红色,其他名字则是蓝色啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:34:12