StyleSheet
StyleSheet 是一种类似于 CSS StyleSheets 的抽象。
代码质量提示
- 通过将样式从 render 函数中移出,你可以使代码更易于理解。
- 命名样式是为 render 函数中的底层组件添加含义并鼓励重用的好方法。
- 在大多数 IDE 中,使用
StyleSheet.create()
将提供静态类型检查和建议,以帮助你编写有效的样式。
参考
方法
compose()
static compose(style1: Object, style2: Object): Object | Object[];
组合两种样式,使得 style2
将覆盖 style1
中的任何样式。如果任一样式为假值,则返回另一个样式,而无需分配数组,从而节省分配并保持 PureComponent 检查的引用相等性。
create()
static create(styles: Object extends Record<string, ViewStyle | ImageStyle | TextStyle>): Object;
用于创建样式的恒等函数。在 StyleSheet.create()
内部创建样式的主要实际好处是对原生样式属性进行静态类型检查。
flatten()
static flatten(style: Array<Object extends Record<string, ViewStyle | ImageStyle | TextStyle>>): Object;
将样式对象数组展平为一个聚合的样式对象。
setStyleAttributePreprocessor()
警告:实验性功能。 可能会发生重大更改,并且不会可靠地宣布。整个功能可能会被删除,谁知道呢? 使用风险自负。
static setStyleAttributePreprocessor(
property: string,
process: (propValue: any) => any,
);
设置一个函数,用于预处理样式属性值。 这在内部用于处理颜色和转换值。 除非你真的知道自己在做什么并且已穷尽其他选择,否则不应使用此功能。
属性
absoluteFill
一个非常常见的模式是创建具有绝对定位和零定位的覆盖层 (position: 'absolute', left: 0, right: 0, top: 0, bottom: 0
),因此可以使用 absoluteFill
来方便使用并减少这些重复样式的重复。 如果需要,可以使用 absoluteFill 在 StyleSheet 中创建自定义条目,例如:
absoluteFillObject
有时你可能想要 absoluteFill
但需要进行一些调整 - absoluteFillObject
可用于在 StyleSheet
中创建自定义条目,例如:
hairlineWidth
这被定义为平台上细线的宽度。 它可以用作两个元素之间边框或分隔线的粗细。 示例
此常量将始终是像素的整数(因此,由此定义的线条看起来清晰),并将尝试匹配底层平台上细线的标准宽度。 但是,你不应依赖于它是一个恒定的大小,因为在不同的平台和屏幕密度上,它的值可能会以不同的方式计算。
如果你的模拟器缩小了,则具有 hairline width 的线条可能不可见。