Skip to content

Commit 8d8f206

Browse files
committed
Just use context
1 parent a423c31 commit 8d8f206

File tree

1 file changed

+15
-13
lines changed
  • packages/react-scripts/template/src

1 file changed

+15
-13
lines changed

packages/react-scripts/template/src/index.js

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,30 @@ import './index.css';
44
import App from './App';
55
import * as serviceWorker from './serviceWorker';
66

7-
let setStates = new Map();
7+
let HotContext = React.createContext();
8+
let _invalidate;
9+
function HotContainer({ children }) {
10+
const [inc, setInc] = React.useState(0);
11+
_invalidate = () => setInc(c => c + 1);
12+
return <HotContext.Provider value={inc}>{children}</HotContext.Provider>;
13+
}
814

915
window.__enqueueForceUpdate = function(type) {
1016
console.log('force', type.name);
11-
const id = type.__hot__id;
12-
(setStates.get(id) || []).forEach(setState => setState({}));
17+
_invalidate();
1318
};
1419

1520
window.__renderHook = function(type) {
1621
console.log('render', type.name);
17-
const [, setState] = React.useState();
18-
React.useLayoutEffect(() => {
19-
const id = type.__hot__id;
20-
if (!setStates.has(id)) {
21-
setStates.set(id, new Set());
22-
}
23-
setStates.get(id).add(setState);
24-
return () => setStates.get(id).delete(setState);
25-
}, []);
22+
React.useContext(HotContext);
2623
};
2724

28-
ReactDOM.render(<App />, document.getElementById('root'));
25+
ReactDOM.render(
26+
<HotContainer>
27+
<App />
28+
</HotContainer>,
29+
document.getElementById('root')
30+
);
2931

3032
// If you want your app to work offline and load faster, you can change
3133
// unregister() to register() below. Note this comes with some pitfalls.

0 commit comments

Comments
 (0)