Skip to content
This repository was archived by the owner on Jul 27, 2022. It is now read-only.

Commit 7d46221

Browse files
committed
fix(useFieldArray): nested field array not working
1 parent e3eb173 commit 7d46221

File tree

2 files changed

+20
-16
lines changed

2 files changed

+20
-16
lines changed

.changeset/six-cherries-boil.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"react-cool-form": patch
3+
---
4+
5+
fix(useFieldArray): nested field array not working

src/useFieldArray.ts

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,13 @@ export default <T = any, V extends FormValues = FormValues>(
6666
const [fields, setFields] = useState<string[]>(getFields(true));
6767

6868
const updateFields = useCallback(() => {
69-
setFields(getFields());
70-
setNodesOrValues(getState("values"), {
71-
shouldSetValues: false,
72-
fields: Object.keys(fieldArrayRef.current[name].fields),
73-
});
69+
if (fieldArrayRef.current[name]) {
70+
setFields(getFields());
71+
setNodesOrValues(getState("values"), {
72+
shouldSetValues: false,
73+
fields: Object.keys(fieldArrayRef.current[name].fields),
74+
});
75+
}
7476
}, [fieldArrayRef, getFields, getState, name, setNodesOrValues]);
7577

7678
useEffect(() => {
@@ -106,8 +108,8 @@ export default <T = any, V extends FormValues = FormValues>(
106108
let state = getState();
107109

108110
(["values", "touched", "errors", "dirty"] as Keys[]).forEach((key) => {
109-
const value = state[key][name];
110-
const fieldsLength = state.values[name]?.length;
111+
const value = get(state[key], name);
112+
const fieldsLength = get(state.values, name)?.length;
111113

112114
if (
113115
key === "values" ||
@@ -117,15 +119,12 @@ export default <T = any, V extends FormValues = FormValues>(
117119
)
118120
state = set(
119121
state,
120-
key,
121-
{
122-
...state[key],
123-
[name]: handler(
124-
Array.isArray(value) ? [...value] : [],
125-
key,
126-
fieldsLength ? fieldsLength - 1 : 0
127-
),
128-
},
122+
`${key}.${name}`,
123+
handler(
124+
Array.isArray(value) ? [...value] : [],
125+
key,
126+
fieldsLength ? fieldsLength - 1 : 0
127+
),
129128
true
130129
);
131130
});

0 commit comments

Comments
 (0)