-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuseValues.ts
33 lines (29 loc) · 970 Bytes
/
useValues.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import { useMemo } from 'react';
import { ParentFieldState } from './useParentField';
/**
* Returns tuple with initial value and current value
*/
export function useValues<TValue = any>(
name: string,
parentField: ParentFieldState,
): [TValue | undefined, TValue | undefined] {
return useMemo(() => {
let initialValue: TValue | undefined;
let value: TValue | undefined;
if (parentField.initialValue == null) {
initialValue = undefined;
} else if (Array.isArray(parentField.initialValue)) {
initialValue = parentField.initialValue[Number(name)];
} else {
initialValue = parentField.initialValue[name];
}
if (parentField.value == null) {
value = undefined;
} else if (Array.isArray(parentField.value)) {
value = parentField.value[Number(name)];
} else {
value = parentField.value[name];
}
return [initialValue, value];
}, [name, parentField.initialValue, parentField.value]);
}