Custom Web
It’s possible to render Unistyles without react-native-web
dependency by simply creating your own web-only components.
Unfortunately, you still need to install react-native-web
in order to run your app, because most of the React Native libraries do not work without it.
For this we recommend following the guidelines provided by Expo.
How to create custom web components
In order to create custom web components, you need to use getWebProps
function. It takes a StyleProp
and returns an object with className
and ref
properties.
import { StyleProp, TextStyle } from 'react-native'import { getWebProps } from 'react-native-unistyles/web'
type HeaderProps = { style: StyleProp<TextStyle> children: string}
export const Header: React.FC<HeaderProps> = ({ style, children }) => { const { ref, className } = getWebProps(style)
return ( <h1 ref={ref} className={className} > {children} </h1> )}
Or merge multiple styles:
import { StyleProp, TextStyle } from 'react-native'import { StyleSheet } from 'react-native-unistyles'import { getWebProps } from 'react-native-unistyles/web'
type HeaderProps = { customStyle: StyleProp<TextStyle> children: string}
export const Header: React.FC<HeaderProps> = ({ customStyle, children }) => { const webProps = getWebProps([customStyle, style.text])
return ( <h1 {...webProps}> {children} </h1> )}
const style = StyleSheet.create(theme => ({ text: { color: theme.colors.text, _web: { _hover: { color: theme.colors.primary, } } }}))
That’s it! Now you can use your custom web components in your app.