首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建动态样式组件?

如何创建动态样式组件?
EN

Stack Overflow用户
提问于 2018-06-21 06:02:45
回答 2查看 6K关注 0票数 0

我想要实现的是这样的东西:

代码语言:javascript
复制
import styled from 'react-emotion'

const StyledComponent = styled(({tag}) => tag)`
    // some css styles
`

并把它当作:

代码语言:javascript
复制
<StyledComponent tag=div"/>
<StyledComponent tag="p"/>
<StyledComponent tag="ul"/>
// etc

我的期望是,它应该生成如下HTML:

代码语言:javascript
复制
<div class="some-class"></div>
<p class="some-class"></p>
<ul class="some-class"></ul>

实际产出:

代码语言:javascript
复制
div
p
ul

我的问题是,这能实现吗?还是我遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-21 06:25:05

看来我已经想出了解决问题的办法。为那些可能遇到同样问题的人分享我的答案。

我将StyledComponent声明更改为:

代码语言:javascript
复制
import styled from 'react-emotion'

const StyledComponent = styled(({tag, children, ...props}) => React.createElement(tag, props, children))`
    // some css styles
`

这正如期而至。

如果有人有更好的答案,请发帖子。谢谢

票数 3
EN

Stack Overflow用户

发布于 2018-06-21 06:09:50

您使用react-emotion的方式是错误的,请试试这个。

代码语言:javascript
复制
const StyledComponent = ({ tag, children, ...props }) => {
  const Container = styled(tag)`
    background-colo: red;
  `;
  return <Container {...props}>{children}</Container>;
};

演示:https://codesandbox.io/s/lr4xxp3757

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

https://stackoverflow.com/questions/50961377

复制
相关文章

相似问题

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