Fix timing problem on jumping to linked line number in source view

This commit is contained in:
Eduard Heimbuch
2020-12-17 10:15:08 +01:00
parent 99d389b2af
commit 678e66514e

View File

@@ -40,12 +40,7 @@ type Props = {
permalink?: string;
};
const SyntaxHighlighter: FC<Props> = ({
language = defaultLanguage,
showLineNumbers = true,
value,
permalink
}) => {
const SyntaxHighlighter: FC<Props> = ({ language = defaultLanguage, showLineNumbers = true, value, permalink }) => {
const location = useLocation();
const [contentRef, setContentRef] = useState<HTMLElement | null>();
@@ -55,7 +50,15 @@ const SyntaxHighlighter: FC<Props> = ({
const lineNumber = match[1];
// We defer the content check until after the syntax-highlighter has rendered
setTimeout(() => {
const element = contentRef.querySelector(`#line-${lineNumber}`);
let tries = 0;
let element = contentRef.querySelector(`#line-${lineNumber}`);
if (!element && tries < 10) {
setInterval(() => {
tries += 1;
element = contentRef.querySelector(`#line-${lineNumber}`);
}, 200);
}
if (element && element.scrollIntoView) {
element.scrollIntoView();
}