I have a Button
component (in React) which can either be a button
or an a
element, depending on if a href
prop is passed to the component. Something similar to below:
const Button = ({ children, href, onClick }) => {
if(href) {
return <a href={href} onClick={onClick}>{children}</a>;
}
return <button type="button" onClick={onClick}>{children}</button>;
};
I previously used Sass to style these components, but am now attempting to move over to styled-components
. However, I have come across an issue where these two elements require the same styles, but the syntax of styled-components
would require me to create to separate variables - styled.button
and styled.a
, with duplicated styles for each.
I was wondering if there was a way of dynamically changing the element used in styled-components
, maybe based on props in the same way one can change individual CSS properties? I have attempted something along the lines of:
const StyledButton = styled((props) => props.href ? 'a' : 'button')`
...
`;
but no luck so far. Any advice would be greatly appreciated.