【问题标题】:React (Preact) renders content twiceReact (Preact) 两次渲染内容
【发布时间】:2017-06-18 08:45:20
【问题描述】:

在可编辑的前置元素上,我仅在按下回车键时运行 onKeyDown 脚本以避免文本中出现不需要的 HTML 元素。

render({}, {content}) {
        console.log("render: "+content);
        return <p contenteditable onKeyDown={this.handleKeyDown}>{content}</p>
}

handleKeyDown 函数中,段落内容被更改,并且正在调用setState(content: newText),以便再次呈现内容。这会导致新文本被写入两次。

当我输入“hello world”并在“hello”之后中断时,它将导致 “你好
世界你好
世界”

即使 handleKeyDown 和 render 函数记录了正确的字符串:
“你好
世界”

我在这里做错了什么?

【问题讨论】:

    标签: reactjs preact


    【解决方案1】:

    使用contentEditable时,一般应使用dangerouslySetInnerHTML来设置HTML内容。

      <div
        contentEditable
        dangerouslySetInnerHTML={{
          __html: value
        }}
      />
    

    这是一个working JSFiddle example,展示了如何做到这一点。

    【讨论】:

    • 谢谢!这成功了。我什至记得偶然发现了这个dangerouslySetInnerHTML,但对它的全部内容没有任何解释。
    猜你喜欢
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    相关资源
    最近更新 更多