【发布时间】:2018-04-16 09:17:31
【问题描述】:
假设我有一个基本的、基本级别的 StyledText 组件;
import styled from 'styled-components/native'
const StyledText = styled.Text`
font-size: 16px;
color: pink;
`
export default StyledText
然后我有一个处理标题的 Text 组件的扩展;
import StyledText from '../StyledText'
const StyledTitle = StyledText.extend`
color: black;
font-weight: bold;
font-size: 20px;
`
export default StyledTitle
到目前为止很简单。
我需要做的是根据设备的大小动态增加字体大小。一个简单的函数可以解决这个问题。但是有没有一种方法可以只从主 StyledText 组件调用一次调整大小函数或 util,而不是在整个应用程序中使用 StyledText 扩展的每个实例重复?
澄清一下,增加大小的逻辑没有问题,问题在于每次使用任何扩展的 Text 组件时都导入和使用 util。
例如,util 可能看起来像这样;
// utils
export function fontSize(size) {
// do some logic here to increase the size, or whatever...
return `
font-size: ${size}px;
`
}
然后这样使用;
import styled from 'styled-components/native'
import { fontSize } from 'utils/StyledUtils'
const StyledText = styled.Text`
${fontSize(16)}
color: pink;
`
export default StyledText
问题是 util 文件必须在整个应用程序中一直导入和引用。
【问题讨论】:
-
This 不是您想要的,但也许它会给您一个想法。
-
谢谢,但不是真的……我刚刚编辑了问题以扩展问题。
-
我没有看到你的问题。不需要在整个应用程序中一直导入和引用 util 文件。它只需要从
StyledText模块中导入和引用。您将导入 StyledText 并在整个应用程序中使用它,但您也不必同时导入 utils。 -
然后StyledText会被扩展几次,组成另一个文本元素; StyledTitle、StyledLabel 等。所有这些都需要导入和使用该 util 函数——这是我试图避免的场景,但似乎不可能
标签: javascript react-native styled-components