美文网首页
理解React的核心——Virtual DOM和Diff

理解React的核心——Virtual DOM和Diff

作者: 追风的云月 | 来源:发表于2018-02-22 16:41 被阅读0次

React通过JS对象模拟原生DOM,加上DOM Diff 极大提升了DOM操作的性能。
Virtual DOM:ReactElement 树,轻量级的JavaScript对象,并通过 ReactDOM 的 render 方法渲染到真实 DOM 上。

var Element = {
  type: 'div',
  props: {
    className: css,
    childlren: []
  }
};

React diff:帮助我们计算出 Virtual DOM 中真正变化的部分,由虚拟 DOM来确保只对界面上真正变化的部分进行实际的DOM操作,而非重新渲染整个页面,从而保证了每次操作更新后页面的高效渲染。

浅谈ReactDiff算法的几个规则:

  • 不同节点比较:节点类型不同则直接删除旧节点,插入新节点
  • 列表节点的比较:设置唯一的key,可以帮助react快速定位要修改的元素
    JSX:每一个JSX元素都只是 React.createElement(component, props, ...children) 的语法糖。因此,任何时候你用JSX语法写的代码也可以用普通的 JavaScript 语法写出来。
class Hello extends React.Component {
  render() {
    return <div>Hello {this.props.toWhat}</div>;
  }
}

ReactDOM.render(
  <Hello toWhat="World" />,
  document.getElementById('root')
);
//可以被编译为不使用JSX的代码
class Hello extends React.Component {
  render() {
    return React.createElement('div', null, `Hello ${this.props.toWhat}`);
  }
}

ReactDOM.render(
  React.createElement(Hello, {toWhat: 'World'}, null),
  document.getElementById('root')
);

相关文章

网友评论

      本文标题:理解React的核心——Virtual DOM和Diff

      本文链接:https://www.haomeiwen.com/subject/kpjztftx.html