react中keys的作用
- keys是react用于追踪那些列表中被修改、添加或者被移除的辅助标识。
- 在开发过程中,需要保证某个元素的key在其同级元素中具有唯一性。在react diff算法中react会借助元素的key值来判断该元素是新创建的还是被移动而来的元素,从而减少不必要的元素重渲染。此外,react还需要借助key值来判断元素与本地状态的关联关系。
传入setState函数的第二个参数的作用是什么?
- 该函数会在setState函数调用完成并且组件开始重新渲染的时候被调用,可以用该函数来监听渲染是否完成。
React中refs的作用是什么
- refs是react提供给我们的安全访问dom元素或者某个组件实例的句柄。
- 可以为元素添加ref属性然后在回调函数中接受该元素在dom树中的句柄,该值会作为回调函数的第一个参数返回。
在生命周期中的那一步你应该发起AJAX请求?
我们应当将AJAX请求放到componentDidMount函数中执行,原因:
- react下一代调和算法Fiber会通过开始或者停止渲染的方式优化应用性能,其会影响到componentWillMount的触发次数,对于componentWillMount这个生命周期函数的调用次数就会变得不确定,React可能会多次频繁调用componentWillMount。如果我们将AJAX请求放到componentWillMount函数中,会显而易见其会被触发多次。
- 如果我们将AJAX请求放置在生命周期的其他函数中,我们并不能保证请求仅在组件挂在完毕后才会要求响应。如果数据请求组件挂在之前就完成了,并且调用了setState函数就将数据添加到组件状态中,对于未挂载的组件则会报错。
shouldComponentUpdate的作用
允许我们手动判断是否要组件进行更新,根据组件的应用场景设置函数合理返回值能够帮我们避免不必要的更新。