Skip to content

Commit 7f69074

Browse files
committed
Merge keys instead of most keys
1 parent 0e08e58 commit 7f69074

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

example/src/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ import "./index.css";
33
import React from "react";
44
import ReactDOM from "react-dom";
55
// import App from "./App";
6-
import App from "./OneOfObjectArrayForm";
6+
import App from "./OneOfObjectForm";
77

88
ReactDOM.render(<App />, document.getElementById("root"));

src/form.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -246,12 +246,14 @@ export class FormState<T, State = DefaultState, Error = DefaultError> {
246246
* @param notifyParent Should this form notify the parent form about this change?
247247
*/
248248
public setValues(values: T, validate?: boolean, isDefault: boolean = false, notifyChild: boolean = true, notifyParent: boolean = true) {
249-
let newKeys = Object.keys(isDefault ? this.defaultValues : this.values);
250-
let localKeys = Object.keys(values);
251-
let mostKeys = newKeys.length > localKeys.length ? newKeys : localKeys;
249+
let keys = Object.keys(isDefault ? this.defaultValues : this.values);
250+
let newKeys = Object.keys(values);
251+
for (let i = 0; i < newKeys.length; i++) {
252+
if (!keys.includes(newKeys[i])) keys.push(newKeys[i]);
253+
}
252254
// Traverse backwards, so when removing array items, the whole array gets shifted in the right direction
253-
for (let i = mostKeys.length - 1; i >= 0; i--) {
254-
let key = mostKeys[i] as keyof T;
255+
for (let i = keys.length - 1; i >= 0; i--) {
256+
let key = keys[i] as keyof T;
255257
this.setValue(
256258
key,
257259
values[key],

0 commit comments

Comments
 (0)