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

Commit 57a24b6

Browse files
piecykFezVrasta
authored andcommitted
fix: maximum call stack size, create-react-context ref setting (#317)
1 parent fb4b59d commit 57a24b6

File tree

3 files changed

+20
-18
lines changed

3 files changed

+20
-18
lines changed

.size-snapshot.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
{
22
"dist/index.umd.js": {
3-
"bundled": 67000,
4-
"minified": 23875,
5-
"gzipped": 7202
3+
"bundled": 67296,
4+
"minified": 23836,
5+
"gzipped": 7176
66
},
77
"dist/index.umd.min.js": {
8-
"bundled": 31451,
9-
"minified": 12925,
10-
"gzipped": 4201
8+
"bundled": 31932,
9+
"minified": 12958,
10+
"gzipped": 4186
1111
},
1212
"dist/index.esm.js": {
13-
"bundled": 12172,
14-
"minified": 7049,
15-
"gzipped": 2064,
13+
"bundled": 12751,
14+
"minified": 7575,
15+
"gzipped": 2077,
1616
"treeshaked": {
1717
"rollup": {
18-
"code": 3742,
18+
"code": 3790,
1919
"import_statements": 137
2020
},
2121
"webpack": {
22-
"code": 4872
22+
"code": 4900
2323
}
2424
}
2525
}

src/Manager.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import * as React from 'react';
33
import createContext, { type Context } from 'create-react-context';
44

55
export const ManagerReferenceNodeContext: Context<?HTMLElement> = createContext();
6-
export const ManagerReferenceNodeSetterContext: Context<void | (?HTMLElement) => void> = createContext();
6+
export const ManagerReferenceNodeSetterContext: Context<
7+
void | ((?HTMLElement) => void)
8+
> = createContext();
79

810
export type ManagerProps = {
911
children: React.Node,
@@ -13,12 +15,16 @@ export default class Manager extends React.Component<ManagerProps> {
1315
referenceNode: ?HTMLElement;
1416

1517
setReferenceNode = (newReferenceNode: ?HTMLElement) => {
16-
if (this.referenceNode !== newReferenceNode) {
18+
if (newReferenceNode && this.referenceNode !== newReferenceNode) {
1719
this.referenceNode = newReferenceNode;
1820
this.forceUpdate();
1921
}
2022
};
2123

24+
componentWillUnmount() {
25+
this.referenceNode = null;
26+
}
27+
2228
render() {
2329
return (
2430
<ManagerReferenceNodeContext.Provider value={this.referenceNode}>

src/Manager.test.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ describe('Managed Reference', () => {
6565
let ReferenceComp = ({ innerRef }) => (
6666
<div
6767
ref={node => {
68-
// We just want to invoke this once so that we have access to the referenceElement in the upper scope.
69-
if (referenceElement) return;
7068
innerRef(node);
7169
referenceElement = node;
7270
}}
@@ -89,8 +87,6 @@ describe('Managed Reference', () => {
8987
let ReferenceComp = ({ innerRef }) => (
9088
<div
9189
ref={node => {
92-
// We just want to invoke this once so that we have access to the referenceElement in the upper scope.
93-
if (referenceElement) return;
9490
innerRef(node);
9591
referenceElement = node;
9692
}}
@@ -106,7 +102,7 @@ describe('Managed Reference', () => {
106102
);
107103

108104
expect(wrapper.instance().referenceNode).toBe(referenceElement);
109-
wrapper.instance().setReferenceNode(null);
105+
wrapper.instance().componentWillUnmount()
110106
expect(wrapper.instance().referenceNode).toBeNull();
111107
});
112108
});

0 commit comments

Comments
 (0)