@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
99 lines (70 loc) • 3.11 kB
Markdown
---
title: 'useValueProps'
description: 'The `useValueProps` hook standardize handling of the value flow for a single consumer component representing one data point.'
version: 11.0.0
generatedAt: 2026-04-21T13:57:53.876Z
checksum: 090b7d977ba4be5e2c4c04d199a30a4048416c59f443a56985df2f80629d9c40
---
# useValueProps
## Import
```tsx
import { useValueProps } from '@dnb/eufemia/extensions/forms'
// Use useValueProps
```
## Description
The `useValueProps` hook standardize handling of the value flow for a single consumer component representing one data point.
## Relevant links
- [Source code](https://github.com/dnbexperience/eufemia/tree/main/packages/dnb-eufemia/src/extensions/forms/hooks/useValueProps.tsx)
- [Docs code](https://github.com/dnbexperience/eufemia/tree/main/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/create-component/useValueProps)
It also provides a way to transform the value.
This hook works perfectly together with [ValueBlock](/uilib/extensions/forms/create-component/ValueBlock/).
## How to use
```tsx
import { useValueProps } from '@dnb/eufemia/extensions/forms'
const MyValueComponent = (props) => {
const { value, ...rest } = useValueProps(props)
return <ValueBlock {...rest}>{value}</ValueBlock>
}
render(<MyValueComponent path="/dataSelector" />)
```
### Internal Properties
All properties are optional and can be used as needed. These properties can be provided as part of your component properties.
- `value` the input value (string).
- `emptyValue` defines what value is considered to be empty. Defaults to `undefined`. But an empty string will also be validated when required is true.
- `path` the JSON pointer that defines the entry name/key in the data structure.
- `itemPath` similar to `path`, but is used when run inside the [Iterate](/uilib/extensions/forms/Iterate/) context.
### Return Parameters
It returns all of the given component properties, in addition to these:
- `value` the output value.
### Value transformers
The transformers are hooks to transform the value on different stages.
They should return a transformed value: `(value) => value`
- `toInput` transforms the value before it is returned. This applies whether the original source of the value is the value property or the data context.
- `fromExternal` transforms the provided `value` property before any other operations are performed.
In addition there are **value transformers** which should be used outside of the value component (by the value consumer):
- `transformIn` transforms the `value` before it's displayed in the value component.
## Demos
```tsx
const MyValueComponent = (props) => {
const preparedProps = {
label: 'Default Label',
...props,
toInput: (value) => value + 10,
}
const { value, ...rest } = useValueProps(preparedProps)
return <ValueBlock {...rest}>{formatCurrency(value)} kroner</ValueBlock>
}
render(
<Form.Handler
data={{
myValue: 10,
}}
>
<MyValueComponent
label="Amount"
path="/myValue"
transformIn={(value) => value * 2}
/>
</Form.Handler>
)
```