1.如何理解React中的组件间数据传递?

①父-子  通过props传递

②子-父  在父中创建一个可以修改state的方法,之后把这个方法通过props传递给子,在子中调用这个方法

从而达到修改父state的目的.

③非父子组件如何数据共享 or 数据通信:创建全局对象,监听对象on,数据发送方触发自定义事件同时传递数据.

2.使用Creacte-react-app后创建的工程下有registerServiceWorker.js是做什么用的?

答:registerServiceWorker就是为了react项目注册了一个service worker,用来做资源的缓存,这样你下次访问时,就可以更快的获取资源。而且因为资源被缓存,所以即使在离线的情况下也可以访问应用(此时使用的资源是之前缓存的资源)。注意,registerServiceWorler注册的Service  worker 只在生产环境中生效( props.env.NODE_ENV=== 'production')

3.setState后发生了什么?

答案:点击事件开始时,框架调用ReactEventListener.dispatchEvent之后执行batchedUpdates开启事务。

setState中通过this.update.enqueueSetState方法把state加入队列(react-dom中实现了enqueueSetState方法)

事件绑定的方法完成以后,框架会继续执行batchedUpdates进行批量更新。

4.React性能优化是在哪个周期函数?

答:shouldComponentUpdate这个方法用来判断是否需要调用render方法重新描绘dom。因为dom的描绘非常消耗性能

,如果我们能在shouldComponentUpdate方法中能够写出更优的dom diff 算法,可以极大的提高性能。

5.React性能优化方案

①重写shouldComponentUpdate来避免不必要的dom操作

②使用production版本的react.js

③使用key来帮助React识别列表中所有子组件的最小变化。

05-28 20:54