react 组件的 render 方法中显示的 console.log 是啥?

Posted

技术标签:

【中文标题】react 组件的 render 方法中显示的 console.log 是啥?【英文标题】:What is console.log in the render method of a react component showing?react 组件的 render 方法中显示的 console.log 是什么? 【发布时间】:2019-11-26 13:36:57 【问题描述】:

当我有一个 React.js 组件并将 console.log(this) 放在渲染函数的顶部时,当它触发时,React 是在告诉我我的组件正在渲染虚拟 dom 还是实际 dom?我是否应该对此进行优化以使其尽可能不出现?虚拟 dom 渲染和实际渲染哪个更贵?

import React from 'react';

class ItemRow extends React.Component 

  render() 
    console.log(this)
    return (
      <div className="item">
        Hi
      </div>
    )
  


export default ItemRow;

【问题讨论】:

【参考方案1】:

实际的 dom 更新更昂贵。事实上,即使有多个渲染执行,虚拟 dom 也只会在值发生变化时更新。如果有更改,那么它将修补原始 dom 的新更改。

【讨论】:

【参考方案2】:

“this”实际上是根据使用的上下文引用 javascript 元素。

console.log(这个)。在我这边,我得到了整个对象。

props: history: …, location: …, match: …, staticContext: undefined, 
data: …, …
refs: 
state: null

React 自动处理虚拟 dom 操作。它实现了类似 Diffing Algorithm 的东西,它可以协调 dom 元素。它只更新更改的属性。这就是为什么虚拟 dom 操作比实际 dom 操作更快的原因。请点击此链接以获得更深入的见解。 https://reactjs.org/docs/reconciliation.html

【讨论】:

以上是关于react 组件的 render 方法中显示的 console.log 是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Jest Enzyme 测试在 render 方法中返回 null 的 React 组件

React Native(四)自定义Header和Footer组件

即使在获取数据后,React Component的render方法也会被调用两次

[react] 请说说你对react的render方法的理解

React Renders 在我的组件底部!没有顶部

React-render-props和高阶组件