website/docs/latest/api/react-fela/useFela.mdx
# useFela
useFela is React [hook](https://reactjs.org/docs/hooks-intro.html) that provides a universal `css` function as well as a `staticStyle` function. It also provides access to both renderer and theme.
## Arguments
| Argument | Type | Default |
| -------- | -------- | ------------------------------------------------------------------ |
| props | _Object_ | An object of props that is used to render rules and static styles. |
## Returns
(_Object_): The hook interface
## Interface
| Property | Type | Description |
| ----------- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| css | _function_ | A function that accepts a list of [style object](basics/rules/style-object) and/or [rule](basics/rules) and returns a single className. |
| staticStyle | _function_ | A function that accepts the same arguments as [renderStatic](api/fela/renderer#renderStatic). |
| theme | _Object_ | The theme object which is passed down via context. |
| renderer | _[Renderer](api/fela/renderer)_ | The renderer that is passed down via context. |
## Imports
> **Note**: Due to lack of support for hooks in Inferno, useFela is currently only available for React and Preact.
```javascript
import { useFela } from 'react-fela'
import { useFela } from 'preact-fela'
```
## Example
```jsx
function RedOnBlue({ children }) {
const { css } = useFela()
return (
<div className={css({ backgroundColor: 'blue', color: 'red' })}>
{children}
</div>
)
}
```
### Passing props
```jsx
const rule = ({ color }) => ({
backgroundColor: 'blue',
color,
})
function RedOnBlue({ children, ...otherProps }) {
const { css } = useFela(otherProps)
return <div className={css(rule)}>{children}</div>
}
// Usage
const Usage = <RedOnBlue color="red" />
```
### Passing multiple styles
```javascript
function RedOnBlue({ children, customStyle }) {
const { css } = useFela()
return (
<div
className={css({ backgroundColor: 'blue', color: 'red' }, customStyle)}>
{children}
</div>
)
}
// Usage
const Usage = <RedOnBlue customStyle={{ fontSize: 12 }} />
```
### Accessing theme
```javascript
function WithTheme() {
const { theme } = useFela()
return <div>Primary color is {theme.colors.primary}</div>
}
```
### Rendering static styles
```javascript
function WithTheme() {
const { staticStyle } = useFela()
staticStyle(
{
backgroundColor: 'blue',
},
'body'
)
return <div>Primary color is {theme.colors.primary}</div>
}
```