final-form / react-final-form-arrays

A component for rendering and editing arrays 🏁 React Final Form
MIT License
205 stars 70 forks source link

Bug - deleting row #145

Open omerman opened 4 years ago

omerman commented 4 years ago

Assuming we render the array with editable items, like so, {fields.map((arrPrefix) => <Field name={${arrPrefix}.val1} />}

When deleting a row of a field array all of the indexes following the row becomes dirty, in the form.dirtyFields.

I think it happens because the Field component of say item[1].val1 isEqual will return false once deleting say item[0].val1. I think the isEqual should be different when the Field is looking at a nested array field, surely a change in Field would be wrong, but Im thinking there should at least be a FieldArrayCell that will render also accept id prop(along with Field props) and will use this to send the isEqual the correct values, and then, the isEqual will evaluate correctly, and form.dirtyFields will be correct.

OnkelTem commented 4 years ago

I stumbled upon the same problem. Have you found a solution @omerman ?

omerman commented 4 years ago

@OnkelTem Instead of relying on the dirty fields for arrays with delete option.. I checked versus the initial values instead.. In my specific use cases it was enough.. But its not ideal..

ymoran00 commented 3 years ago

It's really irritating :(

omerman commented 3 years ago

It's really irritating :(

It is, but to fix it you'd have to have some breaking changes.. like enforce a unique Id for each row. It is possible.. but seems like a lot of work..