React有哪些优点?
优点:
- 组件化开发
- 引入虚拟DOM ,性能好,响应速度快
- JSX语法
- 单项数据绑定
- 跨浏览器兼容
- 完善度生态圈和活跃的社区
缺点:
- 不是完整的MVC框架
- 不适用于复杂的大型应用
Diff算法的原理
- diff算法的原理是不会再次全部更新
- 他会创建一个新的元素树与之进行对比,如果相同他们会不予处理,他只更新发生变化的地方
- 好处就是减少了消耗,减少资源占用
- 好比两棵树,react会比对这两棵树的不同之处,算出如何高效的更新UI
在构造函数中调用super(props)的目的是什么
在super()没有被调用的时候,子类是不能使用this的,子类必须在constructor中调用super().传递props给super是便于在构造器中使用this.props
shouldComponentUpdate()有什么用?
- 他有两种状态,判断页面是否进行更新使用
- 他会接受一个Boolean值,可以进行拦截处理,用值进行判断
- 如果是true他会继续往下执行
- 如果是false他讲不在执行下面的生命周期
为什么虚拟DOM 可以提高性能?
- React将DOM抽象为虚拟DOM,虚拟DOM就是用一个对象来描述DOM通过对比前后两对象的的差异,最后只把发生变化的元素进行重新渲染,提高渲染效率,
- 原生DOM 重新遍历渲染,大部分与之无关,更新页面代价大
vue和react中ref的作用,用法和区别
- 在vue和react中都可以给子组件添加ref属性来获取/设置子组件的状态
- 在react中ref有两种用法
- 使用字符串ref ="自定义名称"
- 回调函数 ref={(el)=>this.自定义事件名(el)}
- 字符串用法可以通过this.refs.自定义名称来设置和获取和设置元素状态
- 会掉函数是在函数内部进行操作
使用箭头函数的优点是什么
- 作用域安全
- 使用箭头函数可以保留this指向
- 箭头函数没有this指向,它指向上一层作用域
- 他没有arguments,prototype等关键字
- 箭头函数简化代码,便于操作
- 不需要重新指定this指向
- this指向是可变的,但在箭头函数中,它指向上级作用域,而不是函数
当你调用setState的时候,发生了什么?
- 当页面需要进行实时更新的时候才使用setstate
- 当调用setState时,他会将传递setState对象传递给组件的当前状态,这个启动称为"和解",根据这个新的状态更新渲染页面,他会进行两条数据比较,不同的替换,相同的不操作,完成了实时更新
key的作用
key是跟着那些项目进行更改,添加或删除
- 每个key都是独一无二的,他可以使和解更加高效的执行
- 当发生遍历操作时来区别唯一元素的存在
在哪个声明周期发起ajax请求?
在componentDidMount()函数中发起ajax请求, 因为只有当页面挂载完成了,你才知道你要挂载的组件,如果未挂载完成就相当于在一个未挂载的组件上设置setState,挂载完成可以至少保证有一个组件
- 只有挂载完成得到的数据才知道要渲染到哪里
stath和props的区别是什么
- state和props都在对应class的方法
- state是定义初始值时进行使用,但大多数都是用户进行行为的结果
- props是进行接收值的时候进行使用的,它不仅仅是数据,回调函数也可以一起传递
JSX是什么?浏览器怎么解析JSX
jsx是Facebook为react出的语法糖 1.他可以让界面中的HTML代码和js代码完美的融合 2. 解析js代码时用{}进行解析 3. html代码用()进行解析 4. 他减少了代码了 5. 让页面完美融合,增加可读性
- 解析?
<script type="text/bable">
声明周期钩子有哪些?
- constructor 构造器
- componentWillMount 挂载之前
- render 渲染页面
- componentDidMount 挂载完成
- componentWillRecevieProps父组件传值发生变化时触发
- shouldComponentUpdate是否进行更新
- conponentWillUpdate 更新之前
- componentDidUpdate 更新完成
- componentWillUnMount 销毁之前