我正在尝试创建一个包装CodeMirror (4.1)编辑器的React组件。
我遇到了这个问题,通过在组件加载后强制刷新解决,但是当React添加到图片中时,我不太确定需要实现的工作流程。
建议是为了解决错误,我需要在调整包装容器大小后调用.refresh()。
我的代码目前如下所示:
function ($, React, CodeMirror) {
return React.createClass({
render: function () {
console.log("render-editarea");
return (
<textarea id="editarea">
-- Comment here
USE [All Data Items];
SELECT ID FROM [Test Event]
</textarea>
)
},
componentDidMount: function () {
var onExecute = this.props.onExecute;
var editorNode = document.getElementById("editarea");
console.log("componentDidUpdate-editarea:" + editorNode);
var editor = CodeMirror.fromTextArea(editorNode, {
lineNumbers: true,
matchBrackets: true,
indentUnit: 4,
mode: "text/x-mssql",
extraKeys: {"Ctrl-E": function(cm) {
console.log(editor.getValue());
onExecute(editor.getValue());
}}
});
},
并且它是通过父组件的 Render 函数加载的
我已经尝试过
- 将窗口调整大小事件(如 React 手册所示)挂接在编辑器组件中。
- 强制在父组件的
componentDidMount
函数中使用$("#editarea").refresh();
进行刷新
但是这些都似乎没有起作用
因此,如果有人能够告诉我正确的方法,我将不胜感激
非常感谢
this.getDOMNode()
。 - Jared Forsyth