Browse Source

[Beta] fix(SandpackConsole): avoid unsubscribing the logs listeners (#5093)

* Update 3 files

* Delete console-issue.md

* Filter out console error addendum

Co-authored-by: dan <dan.abramov@gmail.com>
main
Danilo Woznica 3 years ago
committed by GitHub
parent
commit
a0bc4d2cf9
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 28
      beta/src/components/MDX/Sandpack/Console.tsx
  2. 2
      beta/src/components/MDX/Sandpack/Preview.tsx

28
beta/src/components/MDX/Sandpack/Console.tsx

@ -87,7 +87,7 @@ type ConsoleData = Array<{
const MAX_MESSAGE_COUNT = 100; const MAX_MESSAGE_COUNT = 100;
export const SandpackConsole = () => { export const SandpackConsole = ({visible}: {visible: boolean}) => {
const {listen} = useSandpack(); const {listen} = useSandpack();
const [logs, setLogs] = React.useState<ConsoleData>([]); const [logs, setLogs] = React.useState<ConsoleData>([]);
const wrapperRef = React.useRef<HTMLDivElement>(null); const wrapperRef = React.useRef<HTMLDivElement>(null);
@ -107,12 +107,24 @@ export const SandpackConsole = () => {
} }
if (message.type === 'console' && message.codesandbox) { if (message.type === 'console' && message.codesandbox) {
setLogs((prev) => { setLogs((prev) => {
const newLogs = message.log.map((consoleData) => { const newLogs = message.log
return { .filter((consoleData) => {
...consoleData, if (
data: formatStr(...consoleData.data), typeof consoleData.data[0] === 'string' &&
}; consoleData.data[0].indexOf('The above error occurred') !== -1
}); ) {
// Don't show React error addendum because
// we have a custom error overlay.
return false;
}
return true;
})
.map((consoleData) => {
return {
...consoleData,
data: formatStr(...consoleData.data),
};
});
let messages = [...prev, ...newLogs]; let messages = [...prev, ...newLogs];
while (messages.length > MAX_MESSAGE_COUNT) { while (messages.length > MAX_MESSAGE_COUNT) {
messages.shift(); messages.shift();
@ -136,7 +148,7 @@ export const SandpackConsole = () => {
} }
}, [logs]); }, [logs]);
if (logs.length === 0) { if (!visible || logs.length === 0) {
return null; return null;
} }

2
beta/src/components/MDX/Sandpack/Preview.tsx

@ -222,7 +222,7 @@ export function Preview({
loading={!isReady && iframeComputedHeight === null} loading={!isReady && iframeComputedHeight === null}
/> />
</div> </div>
{!error && <SandpackConsole />} <SandpackConsole visible={!error} />
</SandpackStack> </SandpackStack>
); );
} }

Loading…
Cancel
Save