Skip to content

Commit 5a2b468

Browse files
author
Tasveer Singh
authored
Bug fix 3.0.1 (#25)
* Fix botched main entrypoint in package.json * Fix @loadable-components fallback and hold ref to IO element * Update README with new fallback option for @loadable/component
1 parent 294ab83 commit 5a2b468

4 files changed

Lines changed: 18 additions & 13 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import loadableVisibility from "react-loadable-visibility/loadable-components";
2727
import Loading from "./my-loading-component";
2828

2929
const LoadableComponent = loadableVisibility(() => import("./my-component"), {
30-
fallback: Loading
30+
fallback: <Loading />
3131
});
3232

3333
export default function App() {

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"name": "react-loadable-visibility",
3-
"version": "3.0.0",
3+
"version": "3.0.1",
44
"description": "A wrapper around react-loadable for elements that are visible on the page",
5-
"main": "lib/index.js",
5+
"main": "index.js",
66
"repository": "https://github.com/stratiformltd/react-loadable-visibility",
77
"author": "Tasveer Singh",
88
"license": "BSD-3-Clause",

src/createLoadableVisibilityComponent.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,13 @@ function createLoadableVisibilityComponent(
4444
}
4545

4646
useEffect(() => {
47-
if (!isVisible && visibilityElementRef.current) {
47+
const element = visibilityElementRef.current;
48+
49+
if (!isVisible && element) {
4850
visibilityHandlers.push(visibilityHandler);
4951

50-
trackedElements.set(visibilityElementRef.current, visibilityHandler);
51-
intersectionObserver.observe(visibilityElementRef.current);
52+
trackedElements.set(element, visibilityHandler);
53+
intersectionObserver.observe(element);
5254

5355
return () => {
5456
const handlerIndex = visibilityHandlers.indexOf(visibilityHandler);
@@ -57,8 +59,8 @@ function createLoadableVisibilityComponent(
5759
visibilityHandlers.splice(handlerIndex, 1);
5860
}
5961

60-
intersectionObserver.unobserve(visibilityElementRef.current);
61-
trackedElements.delete(visibilityElementRef.current);
62+
intersectionObserver.unobserve(element);
63+
trackedElements.delete(element);
6264
};
6365
}
6466
}, [isVisible, visibilityElementRef.current]);
@@ -67,7 +69,7 @@ function createLoadableVisibilityComponent(
6769
return <LoadableComponent {...props} />;
6870
}
6971

70-
if (LoadingComponent) {
72+
if (LoadingComponent || props.fallback) {
7173
return (
7274
<div
7375
style={{
@@ -78,9 +80,12 @@ function createLoadableVisibilityComponent(
7880
{...props}
7981
ref={visibilityElementRef}
8082
>
81-
{React.createElement(LoadingComponent, {
82-
isLoading: true
83-
})}
83+
{LoadingComponent
84+
? React.createElement(LoadingComponent, {
85+
isLoading: true,
86+
...props
87+
})
88+
: props.fallback}
8489
</div>
8590
);
8691
}

src/loadable-components.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ function loadableVisiblity(load, opts = {}) {
88
return createLoadableVisibilityComponent([load, opts], {
99
Loadable: loadable,
1010
preloadFunc: "preload",
11-
loadingComponent: () => opts.LoadingComponent
11+
LoadingComponent: opts.fallback ? () => opts.fallback : null
1212
});
1313
} else {
1414
return loadable(load, opts);

0 commit comments

Comments
 (0)