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) so prevApi !== api evaluates to true again and prevApi.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 a useEffect 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 the useMemo callback is re-invoked, which can be done by just storing the previous API instance in a ref instead of a state.
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.