我在React.js中制作了一个简单的MediumEditor组件。我将该组件放在Medium.js页面的invoke demo上。我的问题是我对invokeElement的调用影响了我的可编辑元素的全部内容而不是选择内容。文档页面上的示例在调用invokeElement之前调用了medium.select()。这是我的版本:React.js组件中使用invokeElement的Medium.js
componentDidMount: function() {
var editor = this.refs.editor.getDOMNode();
var medium = new Medium({
element: editor,
mode: Medium.richMode,
attributes: null,
tags: null,
pastAsText: false
});
this.editor = editor;
this.medium = medium;
this.refs.editor.getDOMNode().focus();
},
highlight: function() {
if(document.activeElement !== this.editor) {
this.medium.select();
}
},
setMode: function(mode) {
this.highlight();
if(mode == 'bold') {
this.medium.invokeElement('b', {
title: "I'm bold!",
style: "color: #66d9ef"
});
} else if(mode == 'underline') {
this.medium.invokeElement('u', {
title: "I'm underlined!",
style: "color: #a6e22e"
});
} else if(mode == 'italic') {
this.medium.invokeElement('i', {
title: "I'm italics!",
style: "color: #f92672"
});
}
},
然后我将setMode附加到我的每个样式按钮(粗体,斜体,下划线)。当我使用上面的代码时,所有可编辑元素的内容都被改变,而不仅仅是选择内容。当我查看medium.js的源代码时,我发现select()确实全选,所以这看起来好像不应该在为所选内容调用invokeElement之前调用它。当我删除突出显示电话没有任何反应...
这似乎是一个奇怪的设置和文档没有解释任何这从我能找到。在所选内容上调用元素的正确方法是什么?任何与使用React.js的medium.js有关的信息也都会受到赞赏。