fix bug with conditional returns in useValue #38
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
There was a really weird bug, which I am not 100% where it originates from.
The logic was somewhat convoluted. We were reassigning to the same value by calling
.map
on the original array. In theory, it sounds okay, but the problem is that:unmount
callback can be called, which replaces the array we are iterating overuseValue
/useValueSelector
, which would add to the array during the executionI am not even sure what exactly was happening in these cases. To make it safe, we simply push new values, and then concatenate it with the result of
trackingSelectorElements
(after all the unmounts and new values added). It can have duplicates, so we need to take care of that as well.I don't think there is anything else like that, but I'll be on the lookout.