首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React组件的Prismjs未突出显示

React组件的Prismjs未突出显示
EN

Stack Overflow用户
提问于 2020-06-08 05:34:43
回答 1查看 531关注 0票数 3

我试图使用PrismJS高亮显示一些javascript代码,但我输入的文本根本不会改变颜色。我已经尝试将CDN用于prismjs和npm,但当我使用Prism.highlightAll()时,我看不到任何变化。以下是编辑器组件代码:

代码语言:javascript
复制
import React, {useEffect,useState} from 'react';
import Prism from 'prismjs';

import './editor.css';

const Editor = (props) => {
    const [content, setContent] = useState(props.content);

    useEffect(() => {
    console.log(content);
    Prism.highlightAll();
    }, [props.language, content]);

    return (
      <div className="code-edit-container">
        <textarea
          className="code-input"
          value={content}
          onChange={evt => setContent(evt.target.value)}
        />
        <pre className="code-output">
          <code className={'language-javascript'}>{content}</code>
        </pre>
      </div>
    );
  };

  export default function CodeEditor() {
    const [editorLanguage, setEditorLanguage] = useState("javascript");
    return (
      <div className="CodeEditor">
        <fieldset>
          <input
            type="radio"
            id="javascript"
            name="language"
            value="javascript"
            checked={editorLanguage === "javascript"}
            onChange={() => setEditorLanguage("javascript")}
          />
          <label htmlFor="javascript">JavaScript</label>
        </fieldset>

        <Editor language={editorLanguage} />
      </div>
    );
  }
EN

回答 1

Stack Overflow用户

发布于 2021-05-02 23:25:30

我试过你的Editor组件代码,它对我很有效。我注意到的一件事是,您没有使用props.language对象从codeEditor组件设置棱镜的语言。你的className表明你只是使用javascript作为棱镜的语言,所以它只会解析和美化javascript。因此,将您的className更改为使用className={'language-javascript'}className={props.language}接口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62251977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档