5

我有表情符号列表。他们每个人都有自己的unicode。使用 Modifier.insertText(),我想将它们插入到文本中。

_addEmoji(text) {
    const { editorState } = this.state;
    const selection = editorState.getSelection();
    const contentState = editorState.getCurrentContent();
    const txt = '&#x' + text + ';';
    let nextEditorState = EditorState.createEmpty();
    if (selection.isCollapsed()) {
      const nextContentState = Modifier.insertText(contentState, selection, txt);
      nextEditorState = EditorState.push(
        editorState,
        nextContentState,
        'insert-characters'
      );
    } else {
      const nextContentState = Modifier.replaceText(contentState, selection, text);
      nextEditorState = EditorState.push(
        editorState,
        nextContentState,
        'insert-characters'
      );
    }
    this.onChange(nextEditorState);
  }

我希望看到

4

1 回答 1

4

因为 insertText 会用 HTML 编码解析你&的。&

您应该直接在那里输入字符,或使用String.fromCharCode.

例如:

Modifier.insertText(contentState, selection, );

或者

Modifier.insertText(contentState, selection, String.fromCharCode(0xd83d, 0xde04));

原因

''.charCodeAt(0).toString(16); //d83d
''.charCodeAt(1).toString(16); //de04
于 2017-03-09T17:00:50.290 回答