Skip to content

Commit e4d844c

Browse files
authored
Add getFieldRef (#29)
1 parent 69fa678 commit e4d844c

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ const {
8989
Field,
9090
FieldsListener,
9191
getFieldValue,
92+
getFieldRef,
9293
setFieldValue,
9394
setFieldError,
9495
focusField,
@@ -199,6 +200,14 @@ type getFieldValue = (
199200
) => Value;
200201
```
201202

203+
#### getFieldRef
204+
205+
Return the field stable `ref`.
206+
207+
```tsx
208+
type getFieldRef = <T>(name: FieldName) => MutableRefObject<T>;
209+
```
210+
202211
#### setFieldValue
203212

204213
By setting `validate: true`, you will enforce validation. It has no effect if the field is already _talkative_.

src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ export type Form<Values extends Required<Values>, ErrorMessage = string> = {
7373
};
7474

7575
getFieldValue: <N extends keyof Values>(name: N, options?: { sanitize?: boolean }) => Values[N];
76+
getFieldRef: <T>(name: keyof Values) => MutableRefObject<T>;
7677
setFieldValue: <N extends keyof Values>(
7778
name: N,
7879
value: Values[N],

src/useForm.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ export const useForm = <Values extends Required<Values>, ErrorMessage = string>(
127127
return sanitize ? getSanitize(name)(value) : value;
128128
};
129129

130+
const getFieldRef = <T>(name: Name) => {
131+
const { ref } = fields.current[name];
132+
return ref as MutableRefObject<T>;
133+
};
134+
130135
const focusField: Contract["focusField"] = (name) => {
131136
const { ref } = fields.current[name];
132137

@@ -347,6 +352,7 @@ export const useForm = <Values extends Required<Values>, ErrorMessage = string>(
347352

348353
return {
349354
getFieldValue,
355+
getFieldRef,
350356
setFieldValue,
351357
setFieldError,
352358
focusField,
@@ -475,6 +481,7 @@ export const useForm = <Values extends Required<Values>, ErrorMessage = string>(
475481
FieldsListener: fieldsListener.current,
476482

477483
getFieldValue: api.getFieldValue,
484+
getFieldRef: api.getFieldRef,
478485
setFieldValue: api.setFieldValue,
479486
setFieldError: api.setFieldError,
480487
focusField: api.focusField,

0 commit comments

Comments
 (0)