zoukankan      html  css  js  c++  java
  • React中使用UEditor

    一般UEditor用于表单的新建和编辑

    <FormItem {...formItemLayout} label='商品详情'>
      {getFieldDecorator('detail', {
        rules: [{ required: true, message: '请输入商品详情' }]
      })(<Ueditor width={692} id="detail" toolbars={videoToolbar} />)}
    </FormItem>

    id和name要相同

    表单提交的时候校验详情是否输入 (因为form.getFieldValue('detail')拿到的值是‘contentChange’,不能作为是否为空的凭证)

    if (!getContent('detail')) {
      form.setFields({
         detail: {
             value: getContent('detail'),
              errors: [new Error(`请输入${type == 1 ? '音频' : '视频'}详情`)]
          }
       })
    }

    编辑的时候,需要将内容写入UEditor

    edit:是否是编辑页 如果是新建页就不用写入

    hasDetail:是否已经渲染好了detail  componentWillReceiveProps会执行好几次 如果不判断是否已经渲染好了detail editor.ready会进入死循环

    courseDetail.detail:渲染的数据

    componentDidMount和componentWillReceiveProps都要执行相同的步骤  因为在实践过程中发现有少数情况 在进入编辑页或者刷新编辑页时editor不能被成功渲染

    componentDidMount() {
        const { courseDetail, edit, hasDetail, dispatch } = this.props
        if (courseDetail.detail && edit && !hasDetail) {
          const editor = getUeditor('detail')
          editor.ready(function() {
            dispatch({
              type: 'courseManagement/saveHasDetail',
              payload: true
            })
            editor.setContent(courseDetail.detail)
          })
        }
      }
      componentWillReceiveProps(nextProps) {
        const { courseDetail, edit, hasDetail, dispatch } = nextProps
        if (courseDetail.detail && edit && !hasDetail) {
          const editor = getUeditor('detail')
          editor.ready(function() {
            dispatch({
              type: 'courseManagement/saveHasDetail',
              payload: true
            })
            editor.setContent(courseDetail.detail)
          })
        }
      }
  • 相关阅读:
    第五周上机作业
    第四周练习
    第八周上机练习
    第七周作业
    第七周上机练习
    第六周作业
    第六周上机练习
    第五周上机作业
    第四周作业
    第四周上机练习
  • 原文地址:https://www.cnblogs.com/AnnieShen/p/9034731.html
Copyright © 2011-2022 走看看