摩纳哥编辑器 monaco editor 中文示范 react 版本

2 篇文章 0 订阅

1、网上react 版本的样例很少,更多的是使用 react-monaco-editor 的react版本,担心封装的不够强大,于是在react 里用的原生组件

代码示例如下,可供参考

class Index extends React.Component {

  componentDidMount() {
    const { path, value, language, onValueChange } = this.props;
    const model = monaco.editor.createModel(value, language, path);
    const options = {
      suggestLineHeight: 20,
      lineHeight: 20,
      lineNumbers: "on"
    };
    this._editor = monaco.editor.create(this._node, options);
    this._editor.setModel(model);
    this._subscription = model.onDidChangeContent(() => {
      console.log(model.getValue());
      // this.props.onValueChange(model.getValue());
      this.props.service.call('setState', {ddlInfo: model.getValue()});
    });
  }

  componentDidUpdate(prevProps: Props) {
    const { path, value, language, onValueChange, dataSourceManage, ...options } = this.props;
    const { ddlInfo } = dataSourceManage;
    this._editor.updateOptions(options);
  
    const model = this._editor.getModel();

    if (ddlInfo !== model.getValue()) {
      model.pushEditOperations(
        [],
        [
          {
            range: model.getFullModelRange(),
            text: ddlInfo,
          },
        ]
      );
    }
  }

  componentWillUnmount() {
    this._editor && this._editor.dispose();
    this._subscription && this._subscription.dispose();
  }

  render() {
    const { info = '' } = this.props;
    return (
      <div>
        <div style={{height: 200}} ref={c => this._node = c} />
      </div>
    );
  }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值