1. 受控组件VS 非受控组件
- <FInput value={x} onChange={fn}/> 受控组件
- <FInput defaultValue={x} ref={input}/> 非受控组件
- 受控组件的状态由开发者维护,非受控组件的状态由组件自身维护(不受开发者控制)
2. React 有哪些生命周期函数?分别有什么用?(Ajax 请求放在哪个阶段?)
- 钩子
- componentDidMount中请求数据
- componentDidMount、componentDidUpdate()、componentWillUnmount
3. React如何实现组件通信?
- 父子靠 props 传函数
- 爷孙可以穿两次 props
- 任意组件用 Redux(也可以自己写一个 eventBus)
4. shouldComponentUpdate 有什么用?
- 用于在没有必要更新 UI 的时候返回 false,以提高渲染性能
5.虚拟DOM 是什么?
- 虚拟 DOM 就是用来模拟 DOM 的一个对象,这个对象拥有一些重要属性,并且更新 UI 主要就是通过对比(DIFF)旧的虚拟 DOM 树 和新的虚拟 DOM 树的区别完成的。
- 虚拟DOM
6.高阶组件?
- 高阶组件就是一个函数,且该函数接受一个组件作为参数,并返回一个新的组件。---高阶组件
- React-Redux 里 connect 就是一个高阶组件,比如
connect(mapState)(MyComponent)
接受组件 MyComponent,返回一个具有状态的新 MyComponent 组件。
7. React diff 的原理是什么?
8. Redux 是什么?
- Redux 是 JavaScript 状态容器,提供可预测化的状态管理。重点是『状态管理』。
- Action/Reducer/Store/单向数据流
- store.dispatch(action)/store.getState()
9. connect 的原理是什么
- react-redux 库提供的一个 API,connect 的作用是让你把组件和store连接起来,产生一个新的组件(connect 是高阶组件)
- react-redux
10. PureComponent VS Component
- PureComponent: 只对比props的第一层的所有值,若第一层所有值一样就不会更新当前组件
- Component: 会对比所有值
11、vue&React区别
- Vue 的表单可以使用 v-model 支持双向绑定,相比于 React 来说开发上更加方便,当然了 v-model 其实就是个语法糖,本质上和 React 写表单的方式没什么区别。
- 改变数据方式不同,Vue 修改状态相比来说要简单许多,React 需要使用 setState 来改变状态,并且使用这个 API 也有一些坑点。并且 Vue 的底层使用了依赖追踪,页面更新渲染已经是最优的了,但是 React 还是需要用户手动去优化这方面的问题。
- React 16以后,有些钩子函数会执行多次,这是因为引入 Fiber 的原因,这在后续的章节中会讲到。
- React 需要使用 JSX,有一定的上手成本,并且需要一整套的工具链支持,但是完全可以通过 JS 来控制页面,更加的灵活。Vue 使用了模板语法,相比于 JSX 来说没有那么灵活,但是完全可以脱离工具链,通过直接编写 render 函数就能在浏览器中运行。
- 在生态上来说,两者其实没多大的差距,当然 React 的用户是远远高于 Vue 的。
- 在上手成本上来说,Vue 一开始的定位就是尽可能的降低前端开发的门槛,然而 React 更多的是去改变用户去接受它的概念和思想,相较于 Vue 来说上手成本略高。
网友评论