【发布时间】:2021-06-17 00:57:22
【问题描述】:
如果不在Text 组件内创建styled-component,我找不到另一种方法来赋予我的道具动态样式。为了性能,我想在 Text 组件之外创建组件。
样式化组件
import React, { ReactChildren } from 'react'
import styled from 'styled-components'
export const Text = ({ as = 'p', children, styles = {} }) => {
const newStyles = Object.entries(styles).reduce((acc, [key, value]) => {
return `${acc}${key}: ${value};`
}, '')
const Component = styled.p`
${newStyles}
color: #000;
`
return <Component as={as}>{children}</Component>
}
所需用途
<Text styles={{ height: "10px" }} />
输出 HTML
<p styles="height: 10px" />
【问题讨论】:
-
你不能在 styled-component 之外做
Object.entries位并将其传入吗? -
是的,但问题在于
Component包含在Text组件中。因此,如果我将两者都取出,我将无法从函数中返回组件。但也许我可以,但我只是看不到它:p
标签: javascript reactjs styled-components