加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

reactjs – 如何判断哪个组件生成了DOM节点?

发布时间:2020-12-14 18:41:20 所属栏目:资源 来源:网络整理
导读:有没有办法告诉哪个组件生成了一个特定的DOM节点? CustomDiva/CustomDivdivb/divdivc/div CustomDiv只是一个生成 div /的包装器.元件. 在DOM中,这些表示为: div data-reactid=".0.0.$/=11"a/divdiv data-reactid=".0.0.$/=12"b/divdiv data-reactid=".0.0.
有没有办法告诉哪个组件生成了一个特定的DOM节点?
<CustomDiv>a</CustomDiv>
<div>b</div>
<div>c</div>

CustomDiv只是一个生成< div />的包装器.元件.

在DOM中,这些表示为:

<div data-reactid=".0.0.$/=11">a</div>
<div data-reactid=".0.0.$/=12">b</div>
<div data-reactid=".0.0.$/=13">c</div>

有没有办法告诉CustomDiv组件生成了哪些DOM节点?

语境:

我有一个DecoratorComponent包装它装饰的组件的render方法.然后,DecoratorComponent修改生成的DOM.

let Foo;

Foo = class extends React.Component {
    render () {
        return <div>
            <SomeOtherComponent />
            {['a','b','c'].map((letter) => { return <p>{letter}</p> })}
        </div>;
    }
};

Foo = DecoratorComponent(Foo);

但是,DecoratorComponent必须仅修改目标组件生成的DOM,即它应该排除SomeOtherComponent的输出.

我需要找到一种方法来区分在组件中动态生成的DOM({[‘a’,’b’,’c’].map((letter)=> {return< p> {letter} < / p>})}在此示例中)和由Foo组件中的另一个组件生成的DOM.

解决方法

您可以使用 React Developer Tools来检查哪些DOM节点已由哪个React组件呈现.

另外,请查看./src/renderers/dom/client/ReactMount.js,它是用于管理DOM节点及其与React组件的关系的react-dom对象.请注意,data-reactid属性在源代码中称为ATTR_NAME.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读