-
Notifications
You must be signed in to change notification settings - Fork 89
fix: result isn't changed when the member collection change v2 #716
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -264,10 +264,10 @@ | |
| return result; | ||
| } | ||
|
|
||
| // We get the value from cache while the first connection to Onyx is being made, | ||
| // We get the value from cache while the first connection to Onyx is being made or the key has changed, | ||
| // so we can return any cached value right away. After the connection is made, we only | ||
| // update `newValueRef` when `Onyx.connect()` callback is fired. | ||
| if (isFirstConnectionRef.current || shouldGetCachedValueRef.current) { | ||
| if (isFirstConnectionRef.current || shouldGetCachedValueRef.current || key !== previousKey) { | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It feels like there are already a handful of options that should help the original issue, without making this change.
Wouldn't there be some combination of those that would fix the original problem in the issue?
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. bump @nkdengineer ^
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I will check this today
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
@tgolen From my investigation, when the key is changed but the subscribe isn't fired, the
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
What is the cause of this not happening?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @tgolen It's the correct behavior since the Onyx.connect() need time to fire the callback
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. But isn't that what this setting is for?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @tgolen Yes, that is how
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. OK, thank you for explaining. I think what I suggest then is to update the comment to explain a little bit more about the "key changed" case. Maybe:
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @tgolen I updated. |
||
| // Gets the value from cache and maps it with selector. It changes `null` to `undefined` for `useOnyx` compatibility. | ||
| const value = OnyxUtils.tryGetCachedValue(key) as OnyxValue<TKey>; | ||
| const selectedValue = memoizedSelector ? memoizedSelector(value) : value; | ||
|
|
@@ -330,7 +330,7 @@ | |
|
|
||
| // If `canBeMissing` is set to `false` and the Onyx value of that key is not defined, | ||
| // we log an alert so it can be acknowledged by the consumer. Additionally, we won't log alerts | ||
| // if there's a `Onyx.clear()` task in progress. | ||
| if (options?.canBeMissing === false && newFetchStatus === 'loaded' && !isOnyxValueDefined && !OnyxCache.hasPendingTask(TASK.CLEAR)) { | ||
| Logger.logAlert(`useOnyx returned no data for key with canBeMissing set to false for key ${key}`, {showAlert: true}); | ||
| } | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.