1.react的生命周期以及方法
- 初始化(挂载):
- getDefaultProps:获得实例默认属性
- getInitialState:获得实例初始状态
- componentwillMount:组件即将被初始化,渲染到页面上
- render:生成虚拟DOM结点
- componentDidMount:组件初始化完成,可以发送请求,事件监听
- 更新:
- componentwillReceiveProps:组件将要接收到属性
- shouldComponentUpdate:改善性能
- componentWillUpdate:组件即将更新,不能修改属性与状态
- render
- componentDidUpdate:组件已经更新,响应props和state改变
- 销毁阶段
-componentWillUnmount:组件即将销毁
2.mvvm在react上面的体现
- modal:this.state中保存的数据以及组件中的方法和生命周期中实现的业务逻辑
- view-modal:JSX,也就是virtual-dom的语法糖
- view:基于虚拟DOM生成的真实DOM以及css
3.原型实现继承以及弊端
- children.prototype = new Father()
即子类的原型为父类的实例(父类实例属性与方法会移到子类原型中),子类原型的[[prototype]]指向父类原型。 - 弊端:所有子类实例共享原型中的方法和属性
- 解决:使用组合继承(借用构造函数实现对于实例的继承,原型链实现对原型的继承)
在子类中调用父类构造函数(A.call(this))
4.promise实现两个接口完成后再执行某个方法
- 用Promise.all()将多个promise合成为一个promise
5.es6的新语法怎么实现兼容
- <script type="text/babel"></script>
- react使用babel插件将es6转为es5
6.跨域的实现以及弊端
- cors(跨域资源共享)
- jsonp(只能实现get请求)
- 配置代理
7.事件代理
- 通过监听父元素,利用事件冒泡触发事件
8.event的兼容
- window.event||event
- event.target||event.srcElement
9.react的性能优化
- shouldComponentUpdate
10.所有组件都需要key吗?key的作用
- react利用key识别组件,认为相同key的组件是同一个组件,则之后相同key的组件将不会被创建
- key最多被应用在数组动态创建的子组件的情况
- key值应该保证唯一且稳定
11.js、css怎么实现兼容浏览器
- 优雅降级、渐进增强
- 判断浏览器
12.数组的方法
13.检测数组的方法
- isArray()
- instanceof()
- Object.prototype.toString().call(target)==="[object Array]"
- target.constructor === Array
网友评论