A StyleSheet is an abstraction similar to CSS StyleSheets
Code quality tips:
compose()
static compose(style1: object, style2: object): object | array<object>
Combines two styles such that style2
will override any styles in style1
. If either style is falsy, the other one is returned without allocating an array, saving allocations and maintaining reference equality for PureComponent checks.
create()
static create(obj: object): object
Creates a StyleSheet style reference from the given object.
flatten()
static flatten(style: array<object>): object
Flattens an array of style objects, into one aggregated style object. Alternatively, this method can be used to lookup IDs, returned by StyleSheet.register
.
NOTE: Exercise caution as abusing this can tax you in terms of optimizations. IDs enable optimizations through the bridge and memory in general. Referring to style objects directly will deprive you of these optimizations.
This method internally uses StyleSheetRegistry.getStyleByID(style)
to resolve style objects represented by IDs. Thus, an array of style objects (instances of StyleSheet.create()
), are individually resolved to, their respective objects, merged as one and then returned. This also explains the alternative use.
setStyleAttributePreprocessor()
WARNING: EXPERIMENTAL. Breaking changes will probably happen a lot and will not be reliably announced. The whole thing might be deleted, who knows? Use at your own risk.
static setStyleAttributePreprocessor(property: string, process: (propValue: any) => any)
Sets a function to use to pre-process a style property value. This is used internally to process color and transform values. You should not use this unless you really know what you are doing and have exhausted other options.
absoluteFill
A very common pattern is to create overlays with position absolute and zero positioning (position: 'absolute', left: 0, right: 0, top: 0, bottom: 0
), so absoluteFill
can be used for convenience and to reduce duplication of these repeated styles. If you want, absoluteFill can be used to create a customized entry in a StyleSheet, e.g.:
absoluteFillObject
Sometimes you may want absoluteFill
but with a couple tweaks - absoluteFillObject
can be used to create a customized entry in a StyleSheet
, e.g.:
hairlineWidth
This is defined as the width of a thin line on the platform. It can be used as the thickness of a border or division between two elements. Example:
This constant will always be a round number of pixels (so a line defined by it can look crisp) and will try to match the standard width of a thin line on the underlying platform. However, you should not rely on it being a constant size, because on different platforms and screen densities its value may be calculated differently.
A line with hairline width may not be visible if your simulator is downscaled.
absoluteFill
vs. absoluteFillObject
Currently, there is no difference between using absoluteFill
vs. absoluteFillObject
.
© 2022 Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://reactnative.dev/docs/stylesheet