Skip to content

Commit

Permalink
fix(Renderer): fix timely re-renders (#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
simonguo committed Aug 1, 2022
1 parent 23effcc commit cf77850
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 6 deletions.
1 change: 1 addition & 0 deletions __tests__/ErrorBoundary-test.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import React from 'react';
import { render } from '@testing-library/react';
import ErrorBoundary from '../src/ErrorBoundary';

Expand Down
1 change: 1 addition & 0 deletions __tests__/Preview-test.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import React from 'react';
import { render } from '@testing-library/react';
import Preview from '../src/Preview';

Expand Down
14 changes: 14 additions & 0 deletions __tests__/Renderer-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import React from 'react';
import { render } from '@testing-library/react';
import Renderer from '../src/Renderer';

it('refault is rendering', () => {
const { container } = render(<Renderer />);
expect(container.querySelector('.rcv-render')).toHaveTextContent('Rendering...');
});

it('should render a test div', () => {
const { container } = render(<Renderer code="ReactDOM.render(<div>test</div>)" />);

expect(container.querySelector('.rcv-render')).toContainHTML('<div>test</div>');
});
9 changes: 3 additions & 6 deletions src/Renderer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ const Renderer = React.forwardRef((props: RendererProps, ref: React.Ref<HTMLDivE
} = editor;

const [editable, setEditable] = useState(isEditable);
const [hasError, setHasError] = useState(false);
const [errorMessage, setErrorMessage] = useState(null);
const [compiledReactNode, setCompiledReactNode] = useState(null);

Expand All @@ -91,7 +90,6 @@ const Renderer = React.forwardRef((props: RendererProps, ref: React.Ref<HTMLDivE
}, [editable]);

const handleError = useCallback(error => {
setHasError(true);
setErrorMessage(error.message);
}, []);

Expand Down Expand Up @@ -123,7 +121,7 @@ const Renderer = React.forwardRef((props: RendererProps, ref: React.Ref<HTMLDivE
});
}
} catch (err) {
console.error(err);
console.warn(err);
} finally {
// Reset the render function to the original value.
ReactDOM.render = originalRender;
Expand All @@ -138,11 +136,9 @@ const Renderer = React.forwardRef((props: RendererProps, ref: React.Ref<HTMLDivE

const handleCodeChange = useCallback(
(code?: string) => {
setHasError(false);
setErrorMessage(null);
onChange?.(code);

executeCode(code);
setErrorMessage(null);
},
[executeCode, onChange]
);
Expand All @@ -164,6 +160,7 @@ const Renderer = React.forwardRef((props: RendererProps, ref: React.Ref<HTMLDivE
);

const showCodeEditor = editable && code;
const hasError = !!errorMessage;

return (
<div className="rcv-container" {...rest} ref={ref}>
Expand Down

0 comments on commit cf77850

Please sign in to comment.