In this PR:
We added support for batching updates, so that react only has to commit one big update, instead of updating every component separately. Back then there were only two subscription mechanisms:
Right now, we only batch updates for withOnyx. The reason for that is that in the NewDot code we have a lot of places that do Onyx.connect outside of react and immediately expect data. So we only wanted to batch withOnyx updates, as these were only used with react:
|
function scheduleSubscriberUpdate<TKey extends OnyxKey>( |
|
key: TKey, |
|
value: OnyxValue<TKey>, |
|
previousValue: OnyxValue<TKey>, |
|
canUpdateSubscriber: (subscriber?: Mapping<OnyxKey>) => boolean = () => true, |
|
): Promise<void> { |
|
const promise = Promise.resolve().then(() => keyChanged(key, value, previousValue, canUpdateSubscriber, true, false)); |
|
batchUpdates(() => keyChanged(key, value, previousValue, canUpdateSubscriber, false, true)); |
|
return Promise.all([maybeFlushBatchUpdates(), promise]).then(() => undefined); |
|
} |
Now we have useOnyx, which internally uses Onyx.connect, not withOnyx. So all components using useOnyx might not be batched.
I opened this issue because I want to look closer, if we need to enable a certain batching logic when using the useOnyx hook.
In this PR:
We added support for batching updates, so that react only has to commit one big update, instead of updating every component separately. Back then there were only two subscription mechanisms:
Onyx.connectwithOnyxRight now, we only batch updates for
withOnyx. The reason for that is that in the NewDot code we have a lot of places that doOnyx.connectoutside of react and immediately expect data. So we only wanted to batchwithOnyxupdates, as these were only used with react:react-native-onyx/lib/OnyxUtils.ts
Lines 1004 to 1013 in c53826b
Now we have
useOnyx, which internally usesOnyx.connect, notwithOnyx. So all components usinguseOnyxmight not be batched.I opened this issue because I want to look closer, if we need to enable a certain batching logic when using the
useOnyxhook.