美文网首页前端面试之路
react 面试基本要点以及考点

react 面试基本要点以及考点

作者: ybrelax | 来源:发表于2019-11-20 13:25 被阅读0次

    setState什么时候是同步的,什么时候是异步的

    setState的原理:
    在React中,如果是由React引发的事件处理(比如通过onClick引发的事件处理),调用setState不会同步更新this.state,除此之外的setState调用会同步执行this.state。所谓“除此之外”,指的是绕过React通过addEventListener直接添加的事件处理函数,还有通过setTimeout/setInterval产生的异步调用。

    原因:在React的setState函数实现中,会根据一个变量isBatchingUpdates判断是直接更新this.state还是放到队列中回头再说,而isBatchingUpdates默认是false,也就表示setState会同步更新this.state,但是,有一个函数batchedUpdates,这个函数会把isBatchingUpdates修改为true,而当React在调用事件处理函数之前就会调用这个batchedUpdates,造成的后果,就是由React控制的事件处理过程setState不会同步更新this.state。

    异步处理的时候

    image.png
    https://reactjs.org/docs/faq-state.html#when-is-setstate-asynchronous

    react 事件机制

    • 当用户在为onClick添加函数时,React并没有将Click时间绑定在DOM上面。
    • 而是在document处监听所有支持的事件,当事件发生并冒泡至document处时,React将事件内容封装交给中间层SyntheticEvent(负责所有事件合成)
    • 所以当事件触发的时候,对使用统一的分发函数dispatchEvent将指定函数执行。

    react 与 vue的对比
    react
    1 函数式思想,all in js ,jsx语法,js操控css
    2 单项数据流
    3 setState重新渲染
    4 每当应用的状态被改变时,全部子组件都会重新渲染。当然,这可以通过shouldComponentUpdate这个生命周期方法来进行控制,如果为true继续渲染、false不渲染,但Vue将此视为默认的优化。

    vue
    1 响应式思想,也就是基于数据可变的。把html、js、css、组合到一起,也可以通过标签引擎组合到一个页面中
    2 双向绑定,每一个属性都需要建立watch监听(页面不用,涉及到组件更新的话需要)
    3 Vue宣称可以更快地计算出Virtual DOM的差异,这是由于它在渲染过程中,会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树

    相关文章

      网友评论

        本文标题:react 面试基本要点以及考点

        本文链接:https://www.haomeiwen.com/subject/xgesdctx.html