memoize suspender ref

This commit is contained in:
nklhrstv 2022-07-11 11:51:25 +03:00
parent abec5d8b6b
commit 538d3c65c0

View file

@ -56,6 +56,7 @@ const withCoreSuspender = (Component, Fallback = () => { }) => {
return streamsRef.current[stream].read(); return streamsRef.current[stream].read();
}, []); }, []);
const suspender = React.useMemo(() => ({ getState, decodeStream }), []);
React.useLayoutEffect(() => { React.useLayoutEffect(() => {
if (!render) { if (!render) {
setRender(true); setRender(true);
@ -63,7 +64,7 @@ const withCoreSuspender = (Component, Fallback = () => { }) => {
}, []); }, []);
return render ? return render ?
<React.Suspense fallback={<Fallback {...props} />}> <React.Suspense fallback={<Fallback {...props} />}>
<CoreSuspenderContext.Provider value={{ getState, decodeStream }}> <CoreSuspenderContext.Provider value={suspender}>
<Component {...props} /> <Component {...props} />
</CoreSuspenderContext.Provider> </CoreSuspenderContext.Provider>
</React.Suspense> </React.Suspense>