书接上回,当用react.memo包裹子组件防止不必要的渲染时候,当父组件传入的是函数时候,因为这个王子组件传入的函数是在父组件中定义的,对于父组件来说它是一个局部变量。当父组件渲染时候,这个函数就会执行一次在销毁,下一次父组件渲染时候,此函数再执行再销毁。所以说两次创建的函数变量不是一回事。对于子组件来说传来了两个不一样的属性。就会重新渲染。 为防止这样结果发生,可以用useCallback来缓存这个函数体,并且这个钩子还可以传入一个依赖项,来改变传入的函数。当父组件下一次传入的时候看见useCallback中的依赖项没有改变,就还会把之前的fn给子组件