react+ueditor(百度编辑器 )

作者: EdmundChen | 来源:发表于2017-01-02 17:43 被阅读7979次

    http://uso.oschina.io/react-ueditor-demo/

    https://github.com/uso51984/react-ueditor

    react+ueditor(百度编辑器 )

    更新日志

    鉴于大家都在问怎么样能用import 导入。 2018年3月24号 23点,抽时间处理了一下。 demo已更新到代码库,目的抛砖引玉。下面说一下解决思路;
    由于ueditor源码并非模块化设计,所以我们不能直接使用,只能修改源码。 其实修改源码也相对简单。 对外把 UE 变量export default UE
    然后相关依赖的变量比如ueditor.config.js 里面的UEDITOR_CONFIG, I18N文件的对象配置等等依赖变量, 也从全局变量, 修改为模块成为主文件的依赖, 类似在
    ueditor.all.js加入以下代码。 当然我个人觉得最好的还是下载源文件修改编译成自己想要的

    import I18N from './lang/zh-cn/zh-cn';
    import UEDITOR_CONFIG from './ueditor.config';
    

    组件代码

    import React from 'react';
    import UE from '../../ueditor/ueditor.all';
    
    class Ueditor extends React.Component {
      static defaultProps = {
        config: {}
      }
    
      constructor(props){
        super(props);
        this.state = {
        };
      }
    
      componentDidMount(){
        this.initEditor()
      }
    
      componentWillUnmount() {
        // 组件卸载后,清除放入库的id
        UE.delEditor(this.props.id);
      }
    
      initEditor() {
        const { id, config } = this.props;
        const ueEditor = UE.getEditor(this.props.id, config);
        const self = this;
    
        ueEditor.ready((ueditor) => {
          if (!ueditor) {
            UE.delEditor(id);
            self.initEditor();
          }
        })
      }
    
      render(){
        return (
          <div id={this.props.id} name="content" type="text/plain"></div>
        )
      }
    }
    export default Ueditor;
    

    调用

    import Ueditor from '../base/Ueditor.js'
    <Ueditor  id="content" height="200" /> 
    

    获取输入内容

    <button onClick={this.testSubmit}>保存</button>
    testSubmit(){
        console.log(UE.getEditor('content').getContent())
    }
    

    调试中遇到问题

    • 前端切换路由后,第二次进入页面不能渲染出编辑器

    在组件卸载后清除编辑器库中存在的id

      componentWillUnmount() {
        // 组件卸载后,清除放入库的id
        UE.delEditor(this.props.id);
      }
    

    参考文献: http://blog.csdn.net/wei_shining/article/details/52344263

    相关文章

      网友评论

      • d22d28b1fb89:有没有拖动后绝对定位的 = =,最近在学习sortable,感觉好难
      • 安静的活着_5643:楼主我在我的react项目中使用你的demo 但是一直报UE没有定义的错误
        EdmundChen:@阿陌_4973 已经更新了最新的哈,
        EdmundChen:@阿陌_4973 这是英文ueditor 库没有加载的原因, 今晚我更新一个另外的实现方式的版本
        阿陌_4973:我这里也遇到了 请问问题解决了吗
      • ZCY_22f9:楼主,我这个ZeroClipboard老是报Array这个错误(未找到),他的源码我没有动过,就是在html中require之后,就出现这个。不在html中require,就是报ZeroClipboard 未找到。。。
        EdmundChen:@lxt_b11c 已解决
        EdmundChen:已修改实现方式, 经过测试不会有不错了哈
        水汽yoyo:解决了吗?
      • 兔贩子:大神,已成功,并整理
        https://www.jianshu.com/p/1d3d630ca0e6
        感谢。
        EdmundChen:不客气, 我发现有另外我觉得更好的实现, 有兴趣可以交流一下
      • 简单1990abc:楼主 demo能跑起来 我自己弄 UE就未定义了
        HappyEvery_fc39:@EdmundChen 你解决了吗,我也是,demo能跑起来,自己写,就一直UE未定义
        简单1990abc:@EdmundChen https://github.com/facebook/create-react-app 我在这个脚手架上面加ueditor 老是失败,能帮帮忙吗
        EdmundChen:@逛逛公园玩 哪里写对?
      • A冷月新:我的意见:Ueditor不是es6的模块化方案,因此不能用import导入。楼主封装的组件可以import,前提是html里已经用<script>标签引入了Ueditor插件及其配置文件。此时Window环境内才会有UE和UEDITOR_CONFIG这两个全局变量。
        EdmundChen:@A冷月新 改改源码就可以了
      • 前端白菜:你好,想问下图片的上传问题是怎么解决的?
        EdmundChen:@前端白菜 http://fexteam.gz01.bdysite.com/ueditor/#server-path
        EdmundChen:@前端白菜 你好图片上传,里面没写, 感觉上是,把ueditor对于的文档api加上去
      • vic高:各位大神 你们有没有遇见过这个问题
        ./src/ueditor/ueditor.config.js
        Line 434: Unexpected use of 'self' no-restricted-globals
        EdmundChen:@vic高 没有, 你的问题解决没?
      • 不灭暗星:react build 后,编辑器的工具栏图标都显示不出来。Uedit文件夹也已经单独放在根目录下
        不灭暗星: @EdmundChen 应该是ngix配置问题,uedit里边引用的html访问不了
        EdmundChen:@不灭暗星 demo 也不能跑起来?
        EdmundChen:@不灭暗星 demo 能跑起来不
      • Monster_a36b:你好,请问我直接按照着你的方法,在UEditor组件那个文件报错TypeError: undefined is not an object (evaluating 'UE.getEditor')
        Monster_a36b:@EdmundChen 你的demo可以跑起来
        EdmundChen:@Monster_a36b demo能跑起来不?
        Monster_a36b:在html文件中也import了
      • 97a3024fbc36:请问一下,如果我想使用import引入js文件的方式实现编辑器的话,需要做什么修改吗?
        一只会跑的程序猿:@EdmundChen 大神,什么时候更啊,急的
        97a3024fbc36:@EdmundChen OK 谢谢~ 我自己试着使用import的时候会出现各种未定义的问题 包括'UE','EDITOR_CONFIG'等等
        EdmundChen:Hi,你好。 import 引入也是可以的。是要改一些东西,不然ueditor好像找不到一些文件。 稍后我跟新出来
      • 禹轩_0a22:大神 求目录结构 我不知道资源文件 放哪 dist里面都是打包生成后的文件 放那里面?
        EdmundChen:demo链接和代码链接发出来了
        EdmundChen:dist的文件,应该是放在外层目录, 这个要看实际项目情况。 这周末我看发个demo出来。前段时间有点忙
      • 豆子_bc27:楼主,你试过一个页面引入多个ueditor吗
        EdmundChen:多个ueditor是啥意思

      本文标题:react+ueditor(百度编辑器 )

      本文链接:https://www.haomeiwen.com/subject/xrgwvttx.html