draft.js 导出html,抽象draft-js到自定义组件,只处理html I / O.

我有这个反应组件,必须抽象 draft-js 编辑器 . 我的redux商店将拥有必须是常规HTML字符串的 description 字段 . 编辑器应该能够获取一个 value HTML字符串并将其解析为自己的内部事物(draftjs) . 更改内容时,应使用最终的HTML内容触发 onChange prop . 换句话说,它应该对外部世界透明,这个组件内部正在发生什么 .

现在,我的组件看起来像这样:

import PropTypes from 'prop-types'

import React, { Component } from 'react'

import { Editor, EditorState, ContentState, convertFromHTML } from 'draft-js'

import { stateToHTML } from 'draft-js-export-html'

export const getStateFromHTML = (html) => {

const blocksFromHTML = html && convertFromHTML(html)

if (blocksFromHTML) {

const state = ContentState.createFromBlockArray(

blocksFromHTML.contentBlocks,

blocksFromHTML.entityMap,

)

return EditorState.createWithContent(state)

}

return EditorState.createEmpty()

}

export default class WYSIWYG extends Component {

static propTypes = {

value: PropTypes.string,

onChange: PropTypes.func,

}

static defaultProps = {

value: '',

onChange: Function.prototype,

}

state = { editorState: null }

componentWillMount() {

this.setEditorState(this.props.value)

}

componentWillReceiveProps({ value }) {

this.setEditorState(value)

}

onChange = (editorState) => {

this.setState({ editorState })

const rawData = stateToHTML(editorState.getCurrentContent())

this.props.onChange(rawData)

}

setEditorState(value) {

this.setState({ editorState: getStateFromHTML(value) })

}

render() {

return (

editorState={this.state.editorState}

onChange={this.onChange}

/>

)

}

}

由于某种原因,这是行不通的 . 似乎在实际更新状态之前调用 getCurrentContent . 我真的不能这么想 .

我愿意接受任何[新]方式来处理这种情况;我只需要能够发送HTML值并获取HTML值 . 我也接受其他WYSIWYG插件的指示,这些插件将完成这项工作 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值