当前位置: 首页 > 知识库问答 >
问题:

为什么React警告由React管理子组件的可满足组件?

郁灿
2023-03-14

在呈现组件时,我得到以下警告:

import React, { Component } from "react";

export default class Editable extends Component {
  render() {
    return (
      <div contentEditable={true} onBlur={this.props.handleBlur}>
        {this.props.children}
      </div>
    );
  }
}

我想我的组件应该完全像托管输入字段那样工作,没有任何问题:

  1. this.props.children是初始值
  2. onblur回调更新event.target.innerhtml
  3. 中的道具
  4. 使用新道具呈现组件

共有1个答案

华泽语
2023-03-14

设置ContentEditablehtml属性允许在浏览器中修改该元素的内容。React警告您,该元素中有由React管理的子元素。React只从上到下工作。这意味着它在顶层管理一个模型,并维护一个表示该数据的虚拟DOM,然后基于该虚拟DOM呈现DOM树。您在React之外对DOM所做的任何更改(例如设置ContentEditable,并允许用户直接在浏览器中编辑内容)都可能被破坏,或者在React更新这些托管元素时给React带来问题。

在您的情况下,您不关心{this.props.children}节点被吹走,因为您知道您正在捕捉更改并对其执行所需的操作。它只是警告您,当您让浏览器直接编辑内容时,最好不要期望该节点保持完整并通过React准确更新。

如果您知道自己在做什么(目前看起来是这样),那么您可以通过添加suppressContentEditableWarning={true}来禁止该警告。

 类似资料:
  • 问题内容: 渲染组件时收到以下警告: 警告:组件 由React 组成,包含。现在,您有责任保证所有这些节点均不会意外修改或重复。这可能不是故意的。 这是我的组件: React想要警告我的代码潜在的问题是什么?通过阅读https://reactjs.org/docs/dom- elements.html上 的文档,我不太了解。 我以为我的组件应该完全像托管输入字段一样工作,没有任何问题: 是初始值

  • 从一个无头的CMS中,我正在获取应该包含在某个页面上的组件列表。获取后,我将动态地导入提到的组件,如下所示: 然后我将这些组件作为子道具传递给某个容器。 然而,尽管一切都运行良好,但对于我拥有的每个组件,我都收到了一些警告: id为“sc-bdnylx”的组件styled.div已动态创建。您可能会看到这个警告,因为您在另一个组件中调用了styled。要解决这个问题,只能在任何呈现方法和函数组件之

  • 我用React构建了3个组件。他们是: 包装器 列表 列表项 如何管理单击的复选框的状态。我想Wrapper知道哪些复选框被选中。

  • 我有这个组件。我想将调用处理程序传递给我创建的每个listElement。如果我像下面这样做,使用,它可以正常工作。问题是,我从控制台中的React中得到此警告:

  • 假设我们有一个名为的react组件,它非常聪明地在一行中显示了三个Arbityle react组件(甚至只是任意定义的dom元素)。 我们可以通过将react元素设置为状态元素并将它们作为属性传入来实现这一点,如下面的答案所建议的: 这恰恰适用于我想做的事情--我想知道的是--这是不是做事情的错误方式?有没有理由(如表现)不这样做事?