2015-02-07 34 views
0

新反應,請指出,如果我率領那錯誤的軌跡:我試圖建立一個HTML編輯器組件,它到目前爲止是這樣的:創建具有ReactJS的HTML編輯器組件

var CopyEditor = React.createClass({ 
    render: function(){ 
    var pageBody = "<p>My HTML string ..."; 
    return (
     <form id="editForm" method="POST"> 
     <textarea id="editor" name="body" value=pageBody /> 
     <input type="submit" id="saveBt" value="save" class="button-primary" /> 
     </form> 
    ); 
    } 
}); 

但我發現了在控制檯下面的錯誤:正在服務器上生成

Uncaught Error: Parse Error: Line 6: Unexpected token ILLEGAL at http://localhost:8000/index.html

var pageBody = '
                           ^

我的HTML字符串,並有在carot在錯誤消息指向一個換行符。我應該做什麼?

回答

1

你真的不需要dangerouslySetInnerHTMLtextarea。你可以只用value道具:

http://jsfiddle.net/egkc7dbd/

var CopyEditor = React.createClass({ 
    onChange : function(){ 
    }, 
    render: function(){ 
    var pageBody = "<p>My HTML string ..."; 
    return (
     <form id="editForm" method="POST"> 
     <textarea id="editor" name="body" value="<p>My HTML string ..." onChange={this.onChange}/> 
     <input type="submit" id="saveBt" value="save" className="button-primary" /> 
     </form> 
    ); 
    } 
}); 

React.render(<CopyEditor/>, document.body); 

UPDATE

按照documentation你可以有換行符使用\n。第一個解決方案缺少{}value道具。

新的jsfiddle:http://jsfiddle.net/jwb50xu9/

var CopyEditor = React.createClass({ 
    onChange : function(){ 
    }, 
    render: function(){ 
    var pageBody = "<p> \n My HTML string ..."; 
    return (
     <form id="editForm" method="POST"> 
     <textarea id="editor" name="body" value={pageBody} onChange={this.onChange}/> 
     <input type="submit" id="saveBt" value="save" className="button-primary" /> 
     </form> 
    ); 
    } 
}); 

React.render(<CopyEditor/>, document.body); 
+0

啊,謝謝!這使得代碼更清晰一些。我意識到最初我的pageBody var沒有用引號括起來,所以我這樣做了,並且得到了一個與我最初發布的錯誤不同的錯誤,這是我在上面更新的。 – saturdayplace 2015-02-07 22:58:43

+0

非常感謝!我發現我的錯誤是由於我的字符串中有換行字符(\ u000a),這些字符在JavaScript中是非法的。我想我一旦用換行符替換它們,我就會被設置。 – saturdayplace 2015-02-07 23:49:31

+0

但textarea不會顯示HTML標記。它只是顯示爲一個字符串? – 2017-12-21 04:03:31