有时在使用 react 进行开发时,您需要放置如下内容:
<script src="https://cloud.tinymce.com/stable/tinymce.min.js"></script>
但我也已经通过 npm 安装了它:
npm install tinymce
并创建了一个自定义组件:
//React required imports
import tinymce from 'tinymce';
class DummyEditor extends Component {
componentDidMount(){
tinymce.init({
//DO intializationn stuff there
})
}
}
所以我正在尝试使用 npm 安装的版本,而无需将<script></script>
标签放在client/main.html
的<head></head>
所以我尝试执行以下操作:
//React required imports
import tinymce from 'tinymce';
class DummyEditor extends Component {
componentwillMount(){
window.myVars={
tinymce:tinymce
}
}
componentDidMount(){
tinymce.init({
//DO intializationn stuff there
})
}
}
以及以下内容:
创建一个名为myTinymce.js
的文件:
import tinymce from './myTinymce';
window.tinymce=tinymce;
export default tinymce;
然后将其用于我的组件
//React required imports
import tinymce from './myTinymce';
class DummyEditor extends Component {
componentwillMount(){
window.myVars={
tinymce:tinymce
}
}
componentDidMount(){
tinymce.init({
//DO intializationn stuff there
})
}
}
但是在这两个动作中,我都得到了:
SyntaxError: expected expression, got '<'[Μάθετε Περισσότερα] plugin.js:1
SyntaxError: expected expression, got '<'[Μάθετε Περισσότερα] theme.js:1
SyntaxError: expected expression, got '<'[Μάθετε Περισσότερα] plugin.js:1
SyntaxError: expected expression, got '<'[Μάθετε Περισσότερα] plugin.js:1
SyntaxError: expected expression, got '<'[Μάθετε Περισσότερα] plugin.js:1
SyntaxError: expected expression, got '<'[Μάθετε Περισσότερα] plugin.js:1
SyntaxError: expected expression, got '<'[Μάθετε Περισσότερα] plugin.js:1
SyntaxError: expected expression, got '<'[Μάθετε Περισσότερα] plugin.js:1
SyntaxError: expected expression, got '<'[Μάθετε Περισσότερα] plugin.js:1
SyntaxError: expected expression, got '<'[Μάθετε Περισσότερα] plugin.js:1
TypeError: t is not a constructor[Μάθετε Περισσότερα]
你们有没有3个想法,如何动态加载影响全局范围或事件的脚本(或tinymce脚本(,而不是加载它们并通过npm下载相同的结果?
你可以使用 jquerygetScript
方法。在getScript
的回调中配置 TinyMCE,并在render
方法中保留一个选择器。 在state
中保留一个标志,该标志将在加载TinyMCE
时更新,并且更新为状态将rerender
组件。
希望以下代码片段有所帮助:
componentDidMount(){
let context = this;
$.getScript('https://cdn.tinymce.com/4/tinymce.min.js', function(){
context.setState({
loading: false
});
tinymce.init({
selector:'#mytextarea',
plugins: 'code, image, textcolor, table',
toolbar: ["undo | redo | italic | bold <and other options>"]
});
});
}
而且,在render
方法中,只需保留具有相同ID的文本区域:
<textarea id='mytextarea'></textarea>