Skip to content

Commit de5a3f6

Browse files
committed
Fixed bug where recoil obj was populated with duplicate keys for every snapshot generated, added additional logic to check for duplicate keys
1 parent ff8537e commit de5a3f6

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/backend/linkFiber.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -202,22 +202,24 @@ function createTree(
202202
currentFiber.memoizedState.next &&
203203
currentFiber.memoizedState.next.memoizedState &&
204204
currentFiber.memoizedState.next.memoizedState.deps &&
205-
isRecoil
205+
isRecoil &&
206+
currentFiber.tag !== 15
206207
) {
207-
let pointer = currentFiber.memoizedState.next;
208208

209-
//pointer helps us find multiple states which are linked as a linkedlist
209+
let pointer = currentFiber.memoizedState.next;
210+
let componentName = currentFiber.elementType.name
211+
212+
if(!recoilObj[componentName]){
213+
recoilObj[componentName] = [];
210214
while (pointer !== null) {
211-
if (!Array.isArray(pointer.memoizedState)) {
212-
let componentName = currentFiber.elementType.name
213-
let atomName = pointer.memoizedState.deps[0]['key'];
214-
allAtomsRelationship.push([
215-
atomName,
216-
componentName,
217-
'atoms and components',
218-
]);
215+
if (!Array.isArray(pointer.memoizedState)) {
216+
let atomName = pointer.memoizedState.deps[0]['key'];
217+
recoilObj[componentName].push(
218+
atomName,
219+
);
220+
}
221+
pointer = pointer.next;
219222
}
220-
pointer = pointer.next;
221223
}
222224

223225
if (currentFiber.memoizedState.next.memoizedState.deps[1].current) {
@@ -237,7 +239,6 @@ function createTree(
237239
});
238240
});
239241
}
240-
241242
}
242243

243244
let newState: any | { hooksState?: any[] } = {};

0 commit comments

Comments
 (0)