作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 PrismJS 突出显示一些 javascript 代码,但我输入的文本根本没有改变颜色。我已经尝试将 CDN 用于 prismjs 和 npm,但是当我使用 Prism.highlightAll() 时我没有看到任何变化。这是编辑器组件代码:
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>
);
}
最佳答案
我尝试了您的编辑器组件代码,它对我有用。我注意到的一件事是您没有使用 props.language
对象从 codeEditor
组件设置 prism 的语言。您的 className 表明您仅使用 javascript 作为 Prism 的语言,因此它只会解析和美化 javascript。所以将您的 className 更改为使用 className={props.language}
而不是 className={'language-javascript'}
。
关于reactjs - Prismjs 没有突出显示 React 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62251977/
有没有一种方法可以“标记”对象的属性,使它们在反射中“突出”? 例如: class A { int aa, b; string s1, s2; public int AA
我是一名优秀的程序员,十分优秀!