【发布时间】:2020-01-03 17:15:00
【问题描述】:
我知道每次渲染都将新函数作为 prop 传递给 react 组件会影响性能(例如传递箭头函数)。在类组件中,我通常通过传递类的方法来解决这个问题。
但是假设我们有一个使用useState 的功能组件,我想创建一个闭包来调用从useState 返回的函数。该函数将在每次渲染时重新创建,因此它传递给的任何组件都将被重新渲染。有没有办法避免在函数组件内部传递一个引用某个变量、函数的新函数?
import React from 'react'
import IDontWantToRerender from './heavyComputations';
export default function IneffectiveFunctionalComponent() {
const [value, setValue] = useState(1);
const valueChanger = () => {
setValue(Math.random());
}
return (
<IDontWantToRerender valueChanger={valueChanger} value={value} />
)
}
【问题讨论】:
标签: reactjs closures react-hooks