1、react是什么
react是用于构建用户界面(视图)的JavaScript库。(官方文档)
react是一个将数据渲染为HTML视图的开源JavaScript库。(由Facebook开发,且开源的-2013年5月宣布开源)
2.为啥要学?
1.原生JavaScript(或者jq)操作dom繁琐、效率低(dom-Api 操作ui)频繁操作dom浏览器会频繁的重绘和排列.
2.使用JavaScript直接操作dom,浏览器会进行1大量重绘和重排。
3.原生JavaScript 没有组件化的编码方案,代码复用率低。
3.React的特点
1.采用组件化模式、声明式编码,提高开发效率及组件复用率。
2.在React Native中可以使用React语法进行移动端开发。
3.使用虚拟dom和diffing算法,尽量减少与真实dom的交互·。
(react 第一次渲染更好性能 首先jsx会将数据转换成虚拟的dom,然后在转换成真实的dom渲染到页面中 跟原生比较 当数据发生变化的,首先原来的虚拟dom先保存下来,然后数据改变的时候,会进行虚拟dom的比较,发现相同一样的不会生成虚拟dom,只要不同的时候才会生成虚拟dom,当数据量特别大的时候,性能特别明显)
说明:react高效的原因:使用虚拟dom,不总是直接操作页面真实dom,diff算法进行比较,最小化页面重绘。
问题1:在jsx中的虚拟dom的添加行内样式(未解决)const dom =<h1 style={color:red}>hello</h1>问题2:在jsx中我先渲染虚拟dom,再定义虚拟dom(为啥没有报错呢)---const存在变量的提升ReactDOM.render(dom,document.getElementById("test"))const dom =<h1> 你好,好莱坞</h1>
为啥用jsx,虚拟dom是什么呢
js创建虚拟dom太过于繁琐了,jsx创建虚拟dom 比较简单快捷。特别嵌套比较深的时候效果更加明显关于虚拟dom:1.本质是object类型的对象(一般对象)2.虚拟dom比较‘轻‘,真实dom比较重,因为虚拟dom是react内部在用,无需真实dom上那么多的属性。3.虚拟dom最终会被react转化成真实dom,呈现在页面上(创建出来的dom都是在内存中)//js 创建虚拟domconst vdom=React.createElement('h1',{id:titile},'helloworld')//jsx 创建虚拟domconst vdom=<h1>helloworld</h1> jsx会自动转换成上面的格式,无需我们转换
