【发布时间】:2018-09-13 07:34:02
【问题描述】:
我在渲染组件时收到以下警告:
警告:组件是
contentEditable并包含children由 React 管理。现在您有责任保证没有 这些节点中的一些被意外修改或复制。这是 可能不是故意的。
这是我的组件:
import React, { Component } from "react";
export default class Editable extends Component {
render() {
return (
<div contentEditable={true} onBlur={this.props.handleBlur}>
{this.props.children}
</div>
);
}
}
React 想要警告我的代码的潜在问题是什么?阅读https://reactjs.org/docs/dom-elements.html的文档,我不太明白。
我想我的组件应该像托管输入字段一样工作,没有任何问题:
-
this.props.children为初始值 -
onBlur回调从event.target.innerHTML更新道具 - 组件使用新的道具渲染
【问题讨论】:
-
React 警告你不要使用潜在的footgun。如果您知道如何正确处理该工具,以免它击中您的脚,那么就带着它奔跑吧。如果你设法射中自己的脚,不要感到惊讶,因为你被警告过。
-
React 不知道
this.props.children包含什么,它只知道你可以销毁那些道具。各种事情都有后果。如果有事件订阅,它们可能会成为内存泄漏,如果有绑定的属性,它们可能会成为 dangler 等等。正如 zzzBov 所说,不要自责。听起来你不会,但 React 和我们都不知道。
标签: javascript reactjs