我正试图重复使用并扩展 styled-component
而没有运气 . 我怀疑我还没有完全掌握如何正确使用 styled-components
我有一个组件,根据传递给它的 icon
prop呈现一个V形图标 . 我想要做的是导出此组件,然后导入它并扩展其样式 . 即 - 在此示例中删除 Header.jsx
中的填充:
Chevron.jsx
import React from 'react'
import styled from 'styled-components'
const StyledChevron = styled.i`
display: flex;
align-items: center;
justify-content: center;
padding: 14px;
cursor: pointer;
border-left: 1px solid #efefef;
transition: all .1s linear;
transform: rotate(0deg);
${props=>props.closed && ``};
&:hover {
background: #f7f4f4;
}
`
const Chevron = (props) => {
return (
<StyledChevron closed={props.item.closed} onClick={()=>{props.openSubMenu(props.item.id)}} className={props.icon}/>
)
}
export default Chevron
Header.jsx
import React from 'react'
import styled from 'styled-components'
import cssvars from '../../js/style/vars'
import Chevron from './Chevron'
const StyledHeader = styled.div`
display: flex;
align-items: center;
padding: 11px;
justify-content: space-between;
background: ${cssvars.primaryColor};
h2 {
font-size: 19px;
color: #fff;
display: flex;
align-items: center;
}
`
const BackChevron = Chevron.extend`
padding: 0
`
const Header = (props) => {
return (
<StyledHeader>
<h2>{props.item.title}</h2>
<BackChevron {...props} icon="icon-arrow-left"/>
</StyledHeader>
)
}
export default Header
使用上面的代码,我得到控制台错误: Uncaught TypeError: _Chevron2.default.extend is not a function
1 回答
styled-components
有某种继承Chevron.jsx
Header.jsx
正如@ yury-tarabanko评论中所述