Skip to content

Commit 7534463

Browse files
Implemented Onyx.connectWithoutView function
1 parent 340f5f2 commit 7534463

1 file changed

Lines changed: 35 additions & 3 deletions

File tree

lib/Onyx.ts

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,11 @@ function init({
8181

8282
/**
8383
* Connects to an Onyx key given the options passed and listens to its changes.
84+
* @deprecated Use `Onyx.connectWithoutView()` instead.
8485
*
8586
* @example
8687
* ```ts
87-
* const connection = Onyx.connect({
88+
* const connection = Onyx.connectWithoutView({
8889
* key: ONYXKEYS.SESSION,
8990
* callback: onSessionChange,
9091
* });
@@ -107,20 +108,48 @@ function connect<TKey extends OnyxKey>(connectOptions: ConnectOptions<TKey>): Co
107108
return connectionManager.connect(connectOptions);
108109
}
109110

111+
/**
112+
* Connects to an Onyx key given the options passed and listens to its changes.
113+
*
114+
* @example
115+
* ```ts
116+
* const connection = Onyx.connectWithoutView({
117+
* key: ONYXKEYS.SESSION,
118+
* callback: onSessionChange,
119+
* });
120+
* ```
121+
*
122+
* @param connectOptions The options object that will define the behavior of the connection.
123+
* @param connectOptions.key The Onyx key to subscribe to.
124+
* @param connectOptions.callback A function that will be called when the Onyx data we are subscribed changes.
125+
* @param connectOptions.waitForCollectionCallback If set to `true`, it will return the entire collection to the callback as a single object.
126+
* @param connectOptions.withOnyxInstance The `withOnyx` class instance to be internally passed. **Only used inside `withOnyx()` HOC.**
127+
* @param connectOptions.statePropertyName The name of the component's prop that is connected to the Onyx key. **Only used inside `withOnyx()` HOC.**
128+
* @param connectOptions.displayName The component's display name. **Only used inside `withOnyx()` HOC.**
129+
* @param connectOptions.selector This will be used to subscribe to a subset of an Onyx key's data. **Only used inside `useOnyx()` hook or `withOnyx()` HOC.**
130+
* Using this setting on `useOnyx()` or `withOnyx()` can have very positive performance benefits because the component will only re-render
131+
* when the subset of data changes. Otherwise, any change of data on any property would normally
132+
* cause the component to re-render (and that can be expensive from a performance standpoint).
133+
* @returns The connection object to use when calling `Onyx.disconnect()`.
134+
*/
135+
function connectWithoutView<TKey extends OnyxKey>(connectOptions: ConnectOptions<TKey>): Connection {
136+
return connectionManager.connect(connectOptions);
137+
}
138+
110139
/**
111140
* Disconnects and removes the listener from the Onyx key.
112141
*
113142
* @example
114143
* ```ts
115-
* const connection = Onyx.connect({
144+
* const connection = Onyx.connectWithoutView({
116145
* key: ONYXKEYS.SESSION,
117146
* callback: onSessionChange,
118147
* });
119148
*
120149
* Onyx.disconnect(connection);
121150
* ```
122151
*
123-
* @param connection Connection object returned by calling `Onyx.connect()`.
152+
* @param connection Connection object returned by calling `Onyx.connect()` or `Onyx.connectWithoutView()`.
124153
*/
125154
function disconnect(connection: Connection): void {
126155
connectionManager.disconnect(connection);
@@ -700,6 +729,7 @@ function setCollection<TKey extends CollectionKeyBase, TMap>(collectionKey: TKey
700729
const Onyx = {
701730
METHOD: OnyxUtils.METHOD,
702731
connect,
732+
connectWithoutView,
703733
disconnect,
704734
set,
705735
multiSet,
@@ -718,6 +748,8 @@ function applyDecorators() {
718748
// @ts-expect-error Reassign
719749
connect = decorateWithMetrics(connect, 'Onyx.connect');
720750
// @ts-expect-error Reassign
751+
connectWithoutView = decorateWithMetrics(connectWithoutView, 'Onyx.connectWithoutView');
752+
// @ts-expect-error Reassign
721753
set = decorateWithMetrics(set, 'Onyx.set');
722754
// @ts-expect-error Reassign
723755
multiSet = decorateWithMetrics(multiSet, 'Onyx.multiSet');

0 commit comments

Comments
 (0)