当前位置:  开发笔记 > 编程语言 > 正文

一个ACE编辑器的瘦包装器,用于制作React组件

如何解决《一个ACE编辑器的瘦包装器,用于制作React组件》经验,为你挑选了1个好方法。

我写了一个组件,它是ace编辑器的瘦包装器.ACE编辑器只会出现一秒然后消失,这很奇怪.

完整代码如下:

import React, { PropTypes, Component } from 'react';

class AceEditor extends Component {

  static propTypes = {
    mode: PropTypes.string.isRequired,
    content: PropTypes.string.isRequired,
  };

  static defaultProps = {
    mode: 'javascript',
    code: '//write your code here',
  };

  render() {
      const jsCode = '
' + this.props.code + '
\ \ '; return
//return

{this.props.code}

} } export default AceEditor;

这个想法很简单,只需使用原始HTML代码插入,原始HTML代码dangerouslySetInnerHTML如下:

function foo(items) { var x = "All this is syntax highlighted"; return x; }

原始HTML代码来自官方网站https://ace.c9.io/#nav=embedding,只有很少的修改.

难道我做错了什么?



1> romseguy..:

你想挂钩componentDidMount将React与许多其他库联系起来:

import React, { PropTypes, Component } from 'react';

class AceEditor extends Component {

  static propTypes = {
    mode: PropTypes.string,
    content: PropTypes.string,
  };

  static defaultProps = {
    mode: 'javascript',
    code: '//write your code here',
  };

  componentDidMount(){
    const node = React.findDOMNode(this.refs.root);
    const editor = ace.edit(node);
    editor.setTheme("ace/theme/clouds");
    editor.getSession().setMode("ace/mode/javascript");
    editor.setShowPrintMargin(false);
    editor.setOptions({minLines: 25});
    editor.setOptions({maxLines: 50});
  }

  render() {
    const style = {fontSize: '14px !important', border: '1px solid lightgray'};
      return (
        
{this.props.code}
); } } export default AceEditor;

包含ace.js在开发构建中的其他位置,或者如果库支持,则使用CommonJS模块.

工作示例:http://codepen.io/romseguy/pen/LGYxNj

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有