我有一个需要多个文本输入的应用程序,并且为了格式化和自定义,我选择draft-js
了我的编辑器,但是我遇到了一个非常令人困惑的输入问题。
当我在编辑器中键入时,我最近按下的键会打印在编辑器的开头,将我的整个输入颠倒过来,就好像插入符号总是在该行的第一个索引处。
我有 3 个编辑器,每个都有一个 onChange,它使用当前的编辑器更新一个 redux 存储contentState
。当页面被重新渲染时,每个编辑器都会被渲染,它们各自的contentState
转换为EditorState
.
这是我的代码:
main.js
render() {
/* Each Editor has a similar block as below */
let coverEditorState = EditorState.createEmpty()
let coverContentState = _.get(data, 'details.message.cover.contentState')
if (typeof coverContentHTML != "undefined"){
coverEditorState = EditorState.createWithContent(coverContentState)
}
return (
...
<Composer
editorState={coverEditorState}
onChange={this._handleCoveringLetterChange.bind(this)}
/>
...
)
}
作曲家.js
class Composer extends Component {
constructor() {
super()
this.state = { editorState: EditorState.createEmpty(), styleMap: {} }
}
componentWillReceiveProps( nextProps ) {
this.setState({ editorState: nextProps.editorState })
}
onChange( editorState ) {
let nextState = Object.assign({}, this.state, { editorState })
let currentContentState = editorState.getCurrentContent()
let changeObject = {
contentState: currentContentState
}
this.setState(nextState)
this.props.onChange(changeObject)
}
render() {
return (
<Editor
editorState={this.state.editorState}
onChange={this.onChange.bind(this)}
/>
)
}
}
我尝试过返回SelectionState
以及ContentState
,将两者结合起来,然后重新渲染,但这只会导致更多的问题和错误。