1.jsx语法规范?
1.只能有一个根节点
2.使用{}进行变量渲染
3.class变使用className代替
4.{}可以编写js表达式
5.is switch for语句不支持使用
6.{/**/}语句注释写法
7.行内样式结构 例如:style={{border:“5px solid #000”}}
8.大写onClick={this.xxx}
父传子peops可不可以修改
受控组件和非受控组件的区别
为什么不能会用数组的下标作为react组件中的key?
react组件中的key要求是唯一标识符,数组的下标会造成数据的混乱
数组的下标不一定是用来表示内容的唯一的标识
js内存泄漏的几种情况?
被遗忘的DOM元素 闭包的不恰当使用 setTimeOut/setInterval的遗忘
事件循环的理解?
javaScript是一门单线程语言,同时只能做一件事情,实现单线程非阻塞方式就是事件循环
js中常用的数组方法
push() pop() unshift() splice() indexof() map() filter() some() find()
什么是防抖节流?
相同点:
防抖节流都是为了组织操作高频繁触发,从而浪费性能
区别:
防抖是触发高频繁事件之后N秒之内只会执行一次,如果N秒内高频繁时间
再次被触发,则重新计算时间。适用于可以多次触发但触发只生效最后一次的场景
节流是高频事件触发,但在 N秒内只会执行一次,如果在N秒内出发多次函数,只
有一次生效,节流会稀释函数的执行频率
组件生命周期阶段触发?
constructor 执行触发一次
组件将要挂载componentWillMount 执行一次
组件已经挂载完成componentDidMount 执行一次
ajax写到当前组件的生命周期
render会触发1+N次
挂在生命周期会执行一次
调用setState执行render函数
父组件
react生命周期为什么去掉will?
componentWillMount()
componentWillReceiveProps()
componentWillUpdate()
react官方想起掉冗余的一些代码
在React16的Flber架构中执行是有优先级的按顺序执行的
react单頁面的優點?
速度快 性能好 跨浏览器兼容 代码块复用高
单向数据流 高效灵活 声明式设计
BrowerRouter跟HashRouter的区别?
1)底层原理不同
BrowerRouter使用的是H5的histroy API 他不兼容IE9以下的版本
HashRouter使用的是URL的哈希值
2)path的表现形式不同
BrowerRouter的路径中没有#, 例llocalhost:3000/~~
HashRouter的路径中包含#,例:localhost:3000/#/
3)刷新后对路由的state的参数的影响不同
BrowerRouter没有任何影响 因为state保存在histroy的对象中
HashRouter刷新后会导致路由state的参数的丢失
编程式路由导航有哪些?区别?
编程式导航跳转:
props.history.push(url) 跳转页面可以返回上一页,保留历史记录
props.history.replace(url) 跳转页面,清空历史记录
props.history.go(num) 返回第几个页面
props.history.forward()
props.history.back()