每次重新渲染时都会计算useState和useRef初始值

时间:2019-10-17 13:47:15

标签: javascript reactjs react-hooks

有件事我迟到了:

const [object, setObject] = useState(new SomeObject());

在这里,我们在每一次重新渲染上构建SomeObject的实例。 然后,如果它是组件的初始渲染,则将其返回到object,否则将被丢弃。

评估初始参数时传入的所有内容,一遍又一遍地丢弃。也最好是纯粹的,因为重新渲染可以任意间隔和任意数量发生。鉴于构造一些对象或大型数组可能会非常昂贵,这不是次优的吗?

这里的解决方案是什么?是我误解了什么,还是React中这样的基本功能以次佳的方式实现了?

1 个答案:

答案 0 :(得分:4)

您可以将函数传递到useState挂钩以获取值lazily initialized

例如:

const [state, setState] = useState(() => new SomeObject());