Every style can be transformed to dynamic function to take additional parameters from JSX:
export const ExampleUnistyles = () => { const { styles } = useStyles(stylesheet) return ( <ScrollView contentContainerStyle={styles.scrollContainer}> {posts.map((post, index) => ( <View key={post.key} // call it as regular function style={styles.post(index)} > <Text> {post.title} </Text> </View> ))} </ScrollView> )} const stylesheet = createStyleSheet({ scrollContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', }, // dynamic function post: (index: number) => ({ backgroundColor: index % 2 === 0 ? 'gold' : 'silver', })})
If you use a dynamic function, library will wrap it in a Proxy to make sure the correct values of breakpoints will be used:
Proxy
const stylesheet = createStyleSheet(theme => ({ scrollContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', }, post: (index: number) => ({ // breakpoints and media queries works with dynamic function backgroundColor: { xs: index % 2 === 0 ? theme.colors.gold : theme.colors.silver, sm: theme.colors.red } })}))