与钩子做出反应:重新租赁的何时发生



何时使用挂钩重新渲染的反应组件?

让我们假设组件:

  • useState
  • 管理状态
  • 从其父母那里接收props

在以下事件之后,重新渲染会直接发生,而在这些时间点仅发生

  • 组件接收新的props
  • state已更新

相关问题

让我们假设该组件具有多个useState表达式,并且用户交互使多个状态更新。

组件会多次重新渲染,一次每state值更改,还是将这些相关更改批量为一个单个重新渲染?

一个组件在以下情况下将重新渲染,因为它不能实现shipComponentUpdate class组件,或者使用react.memo for function

  • 组件接收新道具
  • 状态已更新
  • 上下文值已更新(如果组件使用usecontext侦听上下文更改)
  • 由于上述任何原因而导致的父组件重新租赁

让我们假设该组件具有多种usestate表达式和用户 互动会导致多个状态更新。

将组件重新渲染多次,一次每个状态值 更改,或者它将这些相关更改将 重新渲染?

useState不会将更新的值与以前的值合并,而是执行批处理,例如setState,因此如果一起完成多个状态更新,则进行一个渲染。

在此主题上找到了这篇不错的文章。如果有人需要快速阅读,我将添加摘要。

是什么原因导致React中的渲染?

状态修改

组件在操纵状态时重新呈现,这样简单。因此,当您修改组件的状态时,它倾向于重新呈现新状态值。

通过道具

如果父组件触发了rerrender,所有子组件也将启用,通常只有在组件正在消耗某些道具或经过的道具进行修改时,您只希望特定的子零件才能重新读取器,但这不是情况,是否要消耗道具,修改道具,如果父母触发了渲染。

使用上下文API

修改也是传递给上下文的值的状态时,整个子组件树将被恢复。同样,孩子组件是否消耗上下文数据都没关系,它仍然会恢复。重读者取决于传递给提供商的值,但仍然,所有组件树都将被恢复。

传递参考

在对象,数组和函数比较的情况下,基于引用,即确切的内存位置,因此,它们的比较即使它们看起来相等的收益率是错误的,在React Object中。IS方法用于比较不同的值。<<<<<<<<<<<<<<<<<<

示例:

{}==={}             //false
[]===[]             //false
{a: 5}==={a: 5}     //false
[1,2,3]===[1,2,3]   //false

(将先前状态与新状态进行比较时,它返回false,因为它们没有相同的参考。仅值是相同的)

相关内容

  • 没有找到相关文章

最新更新