Ich habe die gleiche Frage auf Stil-Komponenten issue tracker gestellt: https://github.com/styled-components/styled-components/issues/494
und die aktuelle „Lösung“, die ich gefunden habe, ist:
// agnosticStyled.js
import React from 'react'
import styled from 'styled-components'
export default styled(
({tag = 'div', children, ...props}) =>
React.createElement(tag, props, children)
)
und dann, wenn Sie es brauchen:
import React from 'react'
import styled from './agnosticStyled'
const Button = styled`
color: palevioletred;
text-transform: uppercase;
`
export default Button
Und schließlich:
import React from 'react'
import Button from './Button'
const Component =() =>
<div>
<Button>button</Button>
<Button tag="button">button</Button>
<Button tag="a" href="https://google.com">button</Button>
</div>
export default Component
Hier ein voll funktionierendes Beispiel: https://codesandbox.io/s/6881pjMLQ
Da diese Art und Weise habe ich noch gezwungen bin, zu tun: 'const Taste = myButtonStyle (Stil, 'Taste')' und 'const = Linkbutton myButtonStyle (gestylt,‚a ') 'wenn aus Sicht der ** Präsentation ** das gleiche ist! – cl0udw4lk3r