Fix trying to close file twice in strict mode #1615
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.
Following the stale state issue in myHDF5 that was fixed in #1568, I started seeing HDF5 warnings in development when navigating between files: the h5wasm provider was trying to close the previous file twice.
That's because when React in strict mode re-renders a second time to detect side effects, it doesn't update states (i.e.
setPrevApi(api)
has no effect) soprevApi !== api
evaluates totrue
again andprevApi.cleanUp()
is called again.Now that HDF5 errors are thrown instead of logged as warnings, they really stand out in the console. So I thought I'd try to get rid of them.
None of the React-y solutions (which involve either a
key
or auseEffect
with a clean-up function) are satisfactory, as explained in #1568. In the end, all I want is to call the clean-up function when theuseMemo
callback is re-invoked, which can be done by just storing the previous API instance in a ref instead of a state.