Skip to content
This repository was archived by the owner on Dec 26, 2022. It is now read-only.

Commit 497616d

Browse files
committed
implemented v2
1 parent 6c4e6cc commit 497616d

File tree

2 files changed

+7
-35
lines changed

2 files changed

+7
-35
lines changed

src/index.js

+5-9
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ class ResizeObserverComponent extends Component {
1111
width: 1,
1212
height: 1
1313
};
14+
15+
this.ref = React.createRef();
1416
}
1517

1618
observeIfNeeded() {
17-
const element = this.props.element || ReactDOM.findDOMNode(this);
19+
const element = this.ref.current;
1820

1921
if (element && this.element !== element) {
2022
// clean up after a previous element
@@ -66,18 +68,12 @@ class ResizeObserverComponent extends Component {
6668
}
6769

6870
render() {
69-
const size = {
70-
width: this.state.width,
71-
height: this.state.height
72-
};
73-
74-
return this.props.children(size);
71+
return this.props.children(this.ref, this.state.width, this.state.height);
7572
}
7673
}
7774

7875
ResizeObserverComponent.propTypes = {
79-
children: PropTypes.func.isRequired,
80-
element: PropTypes.object
76+
children: PropTypes.func.isRequired
8177
};
8278

8379
export default ResizeObserverComponent;

tests/index.js

+2-26
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,11 @@ import delay from "delay";
88
// works while it might actually not, if you use the lib without babel-polyfill.
99
import "babel-regenerator-runtime";
1010

11-
// const Observed = () => (
12-
// <ResizeObserver>
13-
// {(ref, width, height) => (
14-
// <div
15-
// ref={ref}
16-
// id="observed"
17-
// style={{
18-
// position: "absolute",
19-
// left: 0,
20-
// top: 0,
21-
// width: "100%",
22-
// height: "100%",
23-
// background: "grey",
24-
// color: "white",
25-
// fontWeight: "bold"
26-
// }}
27-
// >
28-
// {width}x{height}
29-
// </div>
30-
// )}
31-
// </ResizeObserver>
32-
// );
33-
3411
const Observed = () => (
3512
<ResizeObserver>
36-
{({ width, height }) => (
13+
{(ref, width, height) => (
3714
<div
15+
ref={ref}
3816
id="observed"
3917
style={{
4018
position: "absolute",
@@ -66,8 +44,6 @@ beforeAll(() => {
6644
global.observed = document.querySelector("#observed");
6745
});
6846

69-
// todo make sure parcel transpiles down to IE10 (example: async and "Set" doesn't work properly)
70-
// todo run in sauce labs with multiple browsers
7147
it("should render with 1x1 initially, before the ResizeObserver is triggered", async () => {
7248
expect(observed.textContent).toBe("1x1");
7349
});

0 commit comments

Comments
 (0)