javascript - 如何在 React styled-components 的模板文字中定义的单个回调中使用多个道具
问题描述
几天前,我开始在我的 React 项目中使用样式化组件,但我无法使用多个道具来定义组件中的样式。问题的要点是这样的:
const sizes = {
lg: css`
width: 200px;
height: 120px;
font-size: 22px;
`,
md: css`
width: 140px;
height: 80px;
font-size: 18px;
`
}
const getColor = (color)=>css`color: ${color}`
const MyComponent = styled.div`
max-width: 240px;
font-size: 12px;
color: '#ffffff';
${props=>getColor(props.color)}
${props=>sizes[props.size]}
`
....
<MyComponent color="blue" size="lg" ></MyComponent>
问题是,每次我需要为我的组件添加额外的配置(如颜色和大小)时,我都必须在模板文字中添加另一个回调。
有没有办法用一行代码应用所有内容而不添加单独的回调?
解决方案
styled 还接受一个传递 props 的函数:
const MyComponent = styled.div(({color, size}) => `
max-width: 240px;
font-size: 12px;
color: ${color ? color : '#ffffff'};
`${sizes[size]}`
`
我正在使用解构,但您可以根据自己的props
喜好保留它。
推荐阅读
- php - 如何根据要求使按钮可见和隐藏
- php - 发送图像数据时,Codeigniter POST 为空
- c# - 从使用 Selenium Webdriver 访问的 Web Combobox 填充 Combobox
- python - 从多个网站抓取/提取数据的最佳方式
- python - Numpy random.choice 概率总和不等于 1
- python - 如何使用 Python 请求登录网站?
- ruby-on-rails - 如何从 API 正确触发 Omniauth-Facebook (/auth/facebook)?
- php - 如何访问 PHP Laravel 集合的数据
- azure - Azure 应用程序 IP 在 spamhaus 中被列入黑名单
- python - 如何在列表中找到最常用的单词?