我正在尝试使用 react 和marked.js 构建一个简单的降价预览器。感觉就像我快到了 - 我可以 console.log 降价,但由于某种原因,我在尝试插入 HTML 时遇到错误。这是代码:
//import { useState } from 'react';
const {useState} = React
//MAIN APP
function App(){
const [text, setText]=useState("Test")
function editorHandler(event){
setText(event.target.value)
}
return(
<div>
<h1> MARKDOWN PREVIEWER </h1>
<Editor onChange={editorHandler} markDown={text}/>
<Preview previewText={text}/>
</div>
)
}
ReactDOM.render(<App/>, document.getElementById("App"))
// EDITOR COMPONENT
function Editor(props){
return(
<div className="window">
<h2>editor</h2>
<textarea id="editor" value={props.markDown} onChange={props.onChange} placeHolder="Write something here"> </textarea>
</div>
)
}
// PREVIEW COMPONENT
function Preview(props){
console.log(marked(props.previewText)) // works, outputs: <p>Test</p>
function getMarkDownText() {
const rawMarkup = marked(props.previewText)
return {__html: rawMarkup};
}
return(
<div className="window">
<h2>previewer</h2>
<div id="preview" dangerouslySetInnerHTML={getMarkDownText()}> </div>
</div>
)
}
问题似乎出在最后一个 div (id 预览)上。我收到以下不是很有帮助的错误消息:“Uncaught Invariant Violation: Minified React error #60”
如果更简单,Codepen 就在这里:https ://codepen.io/rpollock03/pen/RwWvYQb?editors=1011
感谢您解释我做错了什么。如果这是愚蠢的事情,我正在学习 React 非常抱歉!我试过阅读文档——我认为标记的.js 不是很清楚。