1.react如何绑定this
react为什么要绑定this
在react组件中,每个方法的上下文都会指向该组件的实例,即自动绑定this为当前组件,而且react还会对这种引用进行缓存,以达到CPU和内存的最大化。在使用es6 class或者纯函数时,这种自动绑定就不复存在了。
- bind()方法:每一次渲染都会重新绑定一次
- 在构造函数(constructor())中绑定:只需绑定一次,且函数在别处复用时也不用重新绑定
- 箭头函数:不仅是函数的“语法糖”,还自动绑定了定义此函数作用域的this
2. flex布局



3.内联元素&&块级元素
- 常用的内联元素


< div>,只是为了更好的划分文档的逻辑关系
3. 可变元素(根据上下文关系)

- 标准文档流中的区别
- 块级元素
-
- 占据一整行
-
- height\line-height\padding\margin都可调
-
- 宽度始终与浏览器宽度一样,与内容无关
-
- 可包裹内联元素(块级元素)
- 内联元素
-
- 在一行上排列
-
- height\line-height\padding\margin部分可调
-
- 宽度只与内容有关
-
- 只能包裹文本(行内元素)
注: 不可设置宽高,宽度随内容改变,高度随字体改变。外边界只对左右有效,内边界在ie6中只对左右有效
- 只能包裹文本(行内元素)
- 改变元素类型
- display: block //显示为块级
- display: inline //显示为内联
- display: inlnie-block //显示为内联,表现为同行显示并可修改宽高内外边距等属性
4.图片没加载之前先用一个背景图代替
- 图片懒加载
- 实现方法:
- 页面中的img元素,如果没有src属性,浏览器就不会发出请求去下载图片(提高性能)
- 将真正的路径存放于元素"data-url"中
5.事件委托(事件代理)
- 定义: 利用事件冒泡,只制定一个时间处理程序,就可以管理某一类的所有事件。
- 背景:
- 程序中现有的dom节点是有事件的
- 程序中新添加的dom节点也是有事件的
- 为什么使用
- 减少dom节点进行交互,导致浏览器重绘重排次数
- 方便动态添加和修改元素
- 原理: -利用事件冒泡原理实现:事件从最深节点开始,逐步向上传播事件,委托他们的父级代为执行事件
- 事件冒泡及捕获
- 事件处理流程: 事件捕获阶段 -> 事件目标阶段 -> 事件冒泡阶段
- 事件捕获:当某个元素触发某个事件(如onclick),顶层对象document就会发出一个事件流,随着DOM树的节点向目标元素节点流去,直到到达事件真正发生的目标元素。在这个过程中,事件相应的监听函数是不会被触发的。
- 事件目标: 当到达目标元素之后,执行目标元素该事件相应的处理函数。如果没有绑定监听函数,那就不执行。
- 事件冒泡: 从目标元素开始,往顶层元素传播。途中如果有节点绑定了相应的事件处理函数,这些函数都会被触发。
6.fetch封装后怎么捕捉错误
- fetch请求对某些错误http状态不会reject(会进行封装)
- fetch返回promise导致的,因为返回的promise在某些错误的http状态下如:400、500等不会reject,相反他会被resolve
- 只有网络错误会导致请求不能完成时,fetch才会被reject