簡體   English   中英

無法在 Next.js 13 & Sanity v3 中使用 React Syntax Highlighter

[英]Cannot using React Syntax Highlighter in Next.js 13 & Sanity v3

您好,我的項目使用 Sanity v3 和 React Syntax Highlighter 時遇到問題。 當我使用Refactor庫在瀏覽器中顯示我的代碼時,它通過查看Sanity 的代碼輸入中的教程來工作

但是當我想使用 React Syntax Highlighter 並選擇 Prism 作為主題時,我無法顯示它,因為錯誤如下所示:

Server Error TypeError: Super expression must either be null or a function

我正在使用 Next.Js 13 & Typescript,這是我的代碼:

import { Prism as SyntaxHighlighter } from "react-syntax-highlighter";
import { dark } from "react-syntax-highlighter/dist/esm/styles/prism";

types: {
    image: SampleImageComponent,
    code: (props: any) => {
        return (
            <SyntaxHighlighter language={props.value.language} style={dark}>
                {props.value.code}
            </SyntaxHighlighter>
        );
    },
},

如何在我的項目中添加 React Syntax Highlighter?

出現錯誤是因為它應該像這樣 React.FC 類型:

interface CodeInputProps {
    code: string;
    language: string;
}

const CodeInput: React.FC<CodeInputProps> = (props) => {
    const { code, language } = props;
    return (
        <SyntaxHighlighter language={language} style={tomorrow}>
            {code}
        </SyntaxHighlighter>
    );
};

我找到了這個問題的單獨解決方案。 對我來說,這是因為語法高亮顯示在客戶端運行,如果您使用新的app目錄,開箱即用的 Next13 使用服務器組件。

嘗試在使用SyntaxHighlighter的文件頂部添加'use client'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM