You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(null-children): Support for null children and null DOM node (#52)
* feat(null-children): Support for null children and null DOM node
- Trigger invariant on observing if DOM node isn't found
- Do nothing if user passes null/undefined as children
- Handle re-renders from null/undefined to element children
- Remove prop onlyOnce from API and its deprecation warning
- Re-observing logic has been improved; no more unnecessary calls to observeElement/unobserveElement
- Getting options is now a function for perf speed and transpilation output size
- Removed duplicated test cases and solidified existing ones
BREAKING CHANGE: Drop support for React < 16.3.2
* chore(release): 1.0.0-beta.0
* chore(errorReporter): added configurable error reporter
* chore(release): 1.0.0-beta.1
* chore(readme): update docs about errorReporting
Copy file name to clipboardExpand all lines: CHANGELOG.md
+22Lines changed: 22 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,28 @@
2
2
3
3
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
***null-children:** Support for null children and null DOM node ([04de77e](https://github.com/researchgate/react-intersection-observer/commit/04de77e))
17
+
18
+
19
+
### BREAKING CHANGES
20
+
21
+
***null-children:** Drop support for React < 16.3.2
<ahref="https://github.com/prettier/prettier"><imgalt="styled with prettier"src="https://img.shields.io/badge/styled_with-prettier-ff69b4.svg"></a>
9
+
<ahref="https://www.npmjs.com/package/@researchgate/react-intersection-observer"><imgalt="Dowloads per week"src="https://img.shields.io/npm/dw/@researchgate/react-intersection-observer.svg"></a>
10
10
</p>
11
11
12
12
<br>
@@ -18,33 +18,32 @@ is fully declarative and takes care of all the imperative parts for you.
18
18
19
19
**React Intersection Observer** is good at:
20
20
21
-
***reusing instances**: comparing the passed options
22
-
***performance**: chooses smartly when to re-render and when to re-observe
23
-
***being unopinionated**: how to handle visibility changes is left entirely up to the developer
24
-
***being intuitive**: looks like the Native API
25
-
* **small size**: ~6.5kB before minification (> 3.5kB or less when [minified](https://babeljs.io/repl#?babili=true&browsers=&build=&builtIns=false&spec=false&loose=false&code_lz=JYWwDg9gTgLgBAJQKYEMDG8BmUIjgcilQ3wG4AoUSWOAbzk2ADsATAEQHkBZAOQhaRwAvgxx5CxGAFoWuMpXDR4zAG4oowFEyxiCq9Zu3yqSuAHd1TZgHNRuAhahWm1-eUwBXJhmAQmcYABnTi4AFQBPMCQAUQAbJBAkbQAKJHjE7QBKOnI4PLgiGA8nREkAOiCANRRY4BY4hKSYVPSm7IAydrgYSKQITDg0xu0ynqi4AF4pgkCYDRd5IXJyND9ZuBB1a2YEaMm4AHoAPSkAfgAdFgAqc7KLlgBqZLAADwAfAFJMgBIDincvD4_HAwOpAkgEBAIDAuFtmMkcNDYVBtkxsrRcvlVkx1psUcwAMpzGz7REwuH-U4FKHk_FMUYaEDJbIALgIAAZXvJ8nBsesANogdn7fCcl74AA0GwAjPshVKQAAmOXshUAZjl0oAunKKUT5tYyoEwLVmgdzoEHgdMmVNmBknjUZMAHw5Hk84ADZIAQkdO2ioyQswdFMy6Mx7vdMAAFjgzHAmEh49EoDgoMlCDTkU6QB51gAjQQoOCzA1wU1IKA1Xl-GAoZgksDAF5pQJwLQsA7QEGVtBNOBqWIeIP4TIUSN5JYTgpIIolP1Mcf5IRj5Y8wrFfwAA2-tCFIl3IGlB73ipPIDVQi3FCWAO8MF8_kC0ZqsQgZgAwrhQURkomXjAUpgEQKjhh6XoAIKpig4QVIEUFVuEf5IABHRdAhMFwRhSHAUgoFgROnpwMhAFlPELgxpM0y4SoZFJNYMYEdOeQbiU_4wEauBIMkyQAPpSswAgvNkEyus-r7vl-4DqNx7H8oJKFakBIHyawilhkukZTsuEYznO_jsXA3rUSBN7LHy8AQPm4JQColYNBkMCBLCYD7Im8Yucy_yePej5wNYs4AApQvELDJBAYAPms-y0CubpYms8BkvsEVRTiZTJW8bwJh4sSxJpNY4klWYUvsP7gpCSIUuFkWPoEGUlXSq48hZ3SxkG0YQLELD7NhWHQUhqV1aM7XPl1LCZLpPJUkNawjUQY3dVN-Rsvys3pTGC2dd1RkTDleVwDNtVzZtHXjXAbLslqBWtVZNl2VAbZ7XdlYPQ5TTOSgYBlAA1kg4SBF5unxJZ1mvZWBVmNGwDxMR4Vg7ZlYpQjD31exzJlIOw5hvFkatV4mwwGg0ZID1EzLZGyXGc9KOVg10JwFlFPumS2bMLtNP3XTrOlUzzH5OJeWSd-MnJKdi0sFKL2I1A81nd1gSrszRE-gTKBEyTE248xrH-NLD0FTy2mTrpuv7fl5C3j5QL-IwrAcLTUDvSk-uVlKTRQOETGFesQyOU9cCu07rTaJ930Bc0QfNfkKt-x93stYlA41MOAdx6HmMp0GQPTiDgwhzAhv5FDMOCDx6fwHtWNBmU6M2tXOMYvzeSxwXoxbLOVF7R7sF1iis4J83ZsV0XWnM8bwim7Om7m2Z5AHFcVy5FccChCTcAAJLaJW4I23ADtc1AcAQYFG-8q--boD9bXqwEbZoK-pPmCTiYPYHib58MgHL-feVPzGgg-4RwEtvR6SAMBtiQMAABR8AFwAECoYAfYBzACTNQSyR9izGnAZ6VBPUK5lB_hBWIgQIDmBhrEfyncH6hWfkkPCSM4GIMCMAfMMNoHhEDgMOBQDO4V15C-FwQZ2ysB_mgHAgRwRtgECwogPUUAgAgF4JyXCAigN3mlchlE4FkkIXAFeAABH8Ci6DqEQiIYmWgAqBB_kY9QJjaBbxgDvcBaUD7gygCIIOy8Dh3j3jQ2Il80A_WSJYoRgQpaO29pgbsyQ87AH2OyUgAQ4AAB4BFWJruRBi0ZknAAeA8QeeRWr8L2nbFg7iZbO0jo7KUYTrHyS1NHSMrcv5FPdAQwRLB4gfkEQFUJfSgyNOae6CeSwraAk0eI1AzjKkPRqmlRW2szYR2Cl1UmCy6rZCygmJMm91GuMfHMysoSL5XylsdHEq4Jm-WBK7apLQ2naxVt6IO1Sw5lBfIDAhUd2lvILh88EzQfm1N2fGAks5mQjInv8r-HyI6PMcmUKOZQUAsDChXEZILD7Itpoipo7d-4wGucsa2mivD3ILvirIzyvSwv9i5T5KBvlt1-drRORVugdxUZzDx7zGUIuxR4kZ4FiK8KcmUAQINuKYvaaKsW3L6osIAF6CFdOyOVE4hUyzKBSvFBDxUionCIVsggm7Nx5Nqh6kqgjYkTBgHOFr8j0o-oyqVs4ZWsqiaPUZ49dLjPMknIOHBLkB35JmaEkoCA8zpFG_A4ttosHwNdFYQbHaBRwGAMN-AWBBBQPmUKyayjYgfjUw-IbFmrluvmAAVq4jN0IyF7QdnWjAZRgKNrGEgf4aBYjMrbE4lxNtjlQG-LKFCzjWBtmQOgDiUlICJm0DkAAkMuiyUAPAYGgM8TNSyMSruXYEDwUR0wdqzauA95AD0xiCEy1gPTBn7BvfVLpD7MllDYawMW0NFYUGvT-u93SkB8AEE-gDr7gP8CQB-wS36ggXtXc-3Fh8wO3qDjBr9z6EPLqQ3qlDe1cNMHQ5-sKWG_3LonhHQOobmTsvyGbYNoaMqk03dxTZawpR_S9i6OjLS6W1vrTgGAEAmWBA4GYJgDaT09GLa-OD9Uz0RLgFxxuzNpz43BAARWHJ7fYXGu7RppPgOAnRA4CYwA24TowID6hsLJvK8n227v5FxppBn8BrXM_AWzLgtTcidXkdagQXP_R1HtPMSBtOVk4VSWQaAPBIoAI46fCBC-IW70xIcUyF8Ibm2RZec65n1Rs1P0eniUILPqhBSlitCtc-QIO9MyakOyNLzWRgKxFeqfgmtCJa00KUhHXZK2nCrTrWbkVMFiOEDg3gkCapbl6BhIwgiDrAT4FwC2owAbw-DR1_MJ4lZK7pCDIHuKGt4wEL0Xb-htVvYp4t0NupEHpEQAYUw9r4DJY-Ucl2eTjfqsTGGLAXvMcwAqolRqTbTgXkvZiK815BDvu2OAbD4AeGsNNtkZglE7VqH9boZCItUJgASJgX0xowAAEJIBiUQAAqmAFg6tuKZClPmDw8AzCCFkAmBmFgl3CfgUgKIrB35qZXkQWdUhaiYHAeEXtQYpCrGkvAIXR6wDoNKLOgcO86ogg0N2IX0oABsZQNTMru5AgCVZUchVQP4CObY4E1qsvAvw0GJe-OnEh8VvWApkzFQBl7Ag5GhG5SZroF3jLm0j1b5jakw8R-plyolPqxsAb94MrW7XmJDbxVDyePvM8R4I9ygqt4eSu1o7n_7JeiX7CCCECIUQHm--5dkKk7eG9snKSEM7jnDU-qQ0HfY0yWcjsc0FwvlKv7ybq7pXbiMa_K2u_XqjMemC5ViFtpfdk28_sL2M-rxTvwe-0GwOoXAlEpHaQcA4gxAi1G0DIPNBakBSHYjL5gggiNSC8AIJgKvsRB2n2JImUEkLRDwBwGwNELxNEDwJUBzAQB2iwJumlMZqZuVEgE4skDOm2qjI-FKNKBqmknAKbltvoBoFoM0KVh1uvrOBKHQe6PgESCzvEJIgwJMn5Crguh9OfEwERvAIWP5MAK1jOJgPVMfDAM4uACokLugGAc7j-hIeQgdJgPWLEGUJKMwUfsAT6ADjaoEPmqFFtiPgXlVv6ifjWIoIujAJfiwIzszs4junhFJnuszK1Ipv7k_LyjLO4ZxIkDuhFDxoLG-J-CLL-ADvyGekpAbm4c5rERpNYfKt4dnmYTtkRhYX6vod3hHD4T1DsmkZkjnswS8oYbmsYe_qUQFnkOYVzPtsxIdjpMdonLYU0AAOoUL05MCKLKIr7F63p76s4V7WEh4nLtJIbjFJ4N4EYMGFyHAP7PrJxDiCBI5b4HTAhwKMCPRJRJCh4pFlb6Ta5tq9oe4PL4FzpPYg5JCTbTaOYPZA7PZJBs5_ZlaYD5bgYdjxBnZMHTgrijG3goRa6AEoC5TwBrYaJHKOxjoUDAmmD0DYGVS0hOhCAUBAA&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=true&sourceType=module&lineWrap=false&presets=react%2Cbabili&prettier=false&targets=&version=6.26.0&envVersion=), ~1.3kB gzipped)
21
+
-**reusing instances**: comparing the passed options
22
+
-**performance**: chooses smartly when to re-render and when to re-observe
23
+
-**being unopinionated**: how to handle visibility changes is left entirely up to the developer
24
+
-**being intuitive**: looks like the Native API
26
25
27
26
<br>
28
27
29
28
<details>
30
29
<summary><strong>Table of Contents</strong></summary>
31
30
32
-
*[Getting started](#getting-started)
33
-
*[Installation](#installation)
34
-
*[Inside your codebase](#inside-your-codebase)
35
-
*[What does IntersectionObserver do?](#what-does-intersectionobserver-do)
36
-
*[Why use this component?](#why-use-this-component)
<ViewableMonitor>{isViewable=> (isViewable ?'I am viewable':'I am still hiding')}</ViewableMonitor>
203
194
);
204
195
```
205
196
206
197
Discover more recipes in our [examples section](docs/README.md).
207
198
199
+
### Exception handling
200
+
201
+
By default, an `invariant` error is thrown if there isn't a DOM node to observe when mounted. We've added a helpful and descriptive message that's supposed to help you identify potential problems early on. However, this could also unexpectedtly trigger in production, specially with dynamic children, causing a bigger problem (bubbling up) if not handled correctly (e.g.: error boundary). In such cases, you can set the config for the error reporter to adjust it to your needs:
0 commit comments