首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将道具传递给样式部件

将道具传递给样式部件
EN

Stack Overflow用户
提问于 2020-02-12 23:05:12
回答 3查看 5.9K关注 0票数 0

我正在使用来自CMS (prismic.io)的graphql查询我的react站点的数据,以便生成颜色主题页面。我想传递一个变量或道具到我的样式组件,以改变背景颜色是根据什么是从CMS发回。

在下面的示例中,我的graphql查询将返回用户输入的HEX,然后将其应用于按钮等主题页面。

颜色可以和将改变从一个页面到一个页面,因为用户将选择它在CMS。

任何帮助都将不胜感激。代码示例如下:

道具

props.data.case_study_color

组件

代码语言:javascript
复制
const ContactButton = styled.button `
  background: #004655;
  color: #fff;
  font-size: 2rem;
  padding: 10px;
`;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-12 23:10:13

你可以做下面的事。

代码语言:javascript
复制
const ContactButton = styled.button`
  background: #004655;
  color: ${props => props.color || '#fff'};
  font-size: 2rem;
  padding: 10px;
`;

这里的代码框示例

这将是组件代码:

代码语言:javascript
复制
  .....component

  const [color, setColor] = React.useState("#fff");

  React.useEffect(() => {
    fetch(URL).then(data => {
      setColor(data.response);
    });
  }, []);

  return (
    <div className="App">
      <ContactButton color={color}>White</ContactButton>
    </div>
  );
票数 6
EN

Stack Overflow用户

发布于 2020-02-12 23:10:48

代码语言:javascript
复制
const ContactButton = styled.button `
  background: ${props => props.caseStudyColor};
  color: #fff;
  font-size: 2rem;
  padding: 10px;
`;




<ContactButton caseStudyColor={'#004655'} />
票数 2
EN

Stack Overflow用户

发布于 2020-02-13 00:39:35

由于我的解决方案略有不同,但根据保罗的回答,它可能对其他人有用。

按钮组件

代码语言:javascript
复制
const ContactButton = styled.button`
background: ${props => props.themeColor || '#004655'};`

彩色分量

const themeColor = props.data.case_study_color;

Button

<ContactButton themeColor={themeColor}>Get in touch</ContactButton>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60198185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档