杭州做网站的好公司,图虫,龙岗建设高端网站,wordpress 怎么使用JSX到底是什么
使用React就一定会写JSX#xff0c;JSX到底是什么呢#xff1f;它是一种JavaScript语法的扩展#xff0c;React使用它来描述用户界面长成什么样子#xff0c;虽然它看起来非常像HTML#xff0c;但他确实是javaScript#xff0c;在React代码执行之前#…JSX到底是什么
使用React就一定会写JSXJSX到底是什么呢它是一种JavaScript语法的扩展React使用它来描述用户界面长成什么样子虽然它看起来非常像HTML但他确实是javaScript在React代码执行之前Babel会对将JSX编译为React API。
div classNamecontainerh3Hello React/h3pReact is Great/p
/divReact.createElement(div,{className: container}, React.createElement(h3, null, Hello React),React.createElement(p, null, Hello React)
)从两种语法对比来看JSX语法的出现 只是为了让React开发人员编写界面代码更加轻松。
React.createElement 作用是创建虚拟dom
DOM操作问题
在现代web应用程序中使用javaScript操作DOM是必不可少的但遗憾的是它比其他大多数JavaScript操作要慢的多。 大多数JavaScript框架对于DOM的更新远远操作其必须进行的更新从而使得这种缓慢操作变得更糟。 例如假设你有包含十个项目的列表你仅仅更改了列表的第一项大多数JavaScript框架会重建整个列表这比必要的工作要多十倍。 更新效率低下已经成为严重问题为了解决这个问题React普及了一种叫做Virtual Dom的东西Virtual DOM出现的目的就是为了提高JavaScript操作DOM对象的效率。
为什么是Virtual DOM
在React中 每个DOM对象都有一个对应的Virtual DOM对象它是DOM对象的JavaScript对象表现形式其实就是使用JavaScript对象来描述DOM对象信息比如DOM对象的类型是什么她身上有哪些属性它拥有哪些子元素。 可以把Virtual DOM对象理解为DOM对象的副本但是它不能直接显示在屏幕上。
div classNamecontainerh3Hello React/h3pReact is Great/p
/div{type: div,props: {className: container},children: [{type: h3,props: null,children: [{type: text}, props: {textContent: Hello React}]},{type: p,props: null,children: [{type: text}, props: {textContent: Reac}]}]
}Virtual DOM如何提升效率
精准找出发生变化的部分只更新发生变化的部分。 在React第一次创建DOM对象后会为每个DOM对象创建其对应的Virtual DOM对象在DOM对象发生更新之前React会先更新所有的Virtual DOM对象 然后React会将更新后的Virtual DOM和更新前的Virtual DOM进行比较从而找出发生变化的部分。 React会将发生变化的部分更新到真实的DOM对象中React 仅更新必要更新的部分。 Virtual DOM对象的更新和比较 仅发生在内存中不会再视图中渲染任何内容所以这一部分的性能损耗是微不足道的。 创建Virtual DOM
在React代码执行前 JSX会被Babel转换为React.createElement方法的调用在调用createElement方法时会传入元素的类型元素的属性以及元素的子元素createElement方法的返回值为构建好的Virtual DOM对象