Fix useSyncLocalStorage
initial value loss
#217
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.
Currently
useSyncLocalStorage
does not actually set the initial value in local storage, even though the comment here implies it does.Relatedly, since the item never actually exists in storage, if the user updates some other item, and the effect here runs, the hook will start returning
null
for the value instead of the initial value. This can also of course happen if the user clears their storage / deletes said item, and subsequently updates another item.I think expected behavior would be a) for the initial value to actually get saved in storage, and b) for the hook to revert back to returning the initial value when the item's been deleted. Open to other approaches though!
Realized this while working on some orderbook changes. When using this hook to manage the display preference (i.e. vertical / horizontal), the app will break if the user hasn't explicitly updated this preference and performs some action to trigger a storage update (e.g. change order type).