当前位置: 首页 > 知识库问答 >
问题:

懒惰的初始状态--是什么,在哪里使用?

单于耘豪
2023-03-14

我是新来的反应钩!我正试图在我的代码中使用useState。当我使用它的时候,我发现了一个术语“惰性初始状态”

https://reactjs.org/docs/hooks-reference.html

const [state, setState] = useState(() => {
  const initialState = someExpensiveComputation(props);
  return initialState;
});

但是我想不出这种惰性状态初始化有什么用处!

就像say am我的DOM正在呈现并且它需要状态值,但是我的useState还没有初始化它!!并且说,如果您已经呈现了DOM,并且Ustate ExpensiveComputation已经完成,DOM将重新呈现!!

任何帮助都是有用的!

共有1个答案

易品
2023-03-14

传递给usestate的参数是initialstate,该值在第一次呈现中初始化状态,在后续呈现中被忽略。但是想象一下下面的情况

const Component = () =>{
    const [state, setState] = useState(getInitialHundredItems())
}

假设在每次呈现时都不必要地调用这个值(记住,即使在下一次呈现时忽略了初始值,初始化它的函数仍然会被调用)。

对于像这样的用例,不只是提供一个值,您可以传递一个返回初始状态的function,这个函数将只执行一次(初始呈现),而不是像上面的代码那样每次呈现

const Component = () =>{
    const [state, setState] = useState(getInitialHundredItems)
}
 类似资料:
  • 问题内容: 我是新来回应胡克斯!我正在尝试在我的代码中使用useState。当我使用它时,我发现了一个术语“惰性初始状态” https://reactjs.org/docs/hooks- reference.html 但是我无法想到任何useCase都可以在这种懒惰的状态初始化中发挥作用! 就像说我的DOM正在渲染并且它需要 状态 值,但是我的useState尚未初始化它!并说如果您已经渲染了DO

  • 问题内容: 创建单例的模式似乎是这样的: 但是我的问题是,如果Singleton构造函数执行的不是单元测试友好的操作,例如如何调用外部服务,jndi查找等,您如何使用这样的类进行单元化? 我想我可以像这样重构它: 现在的问题是,仅出于单元可测试性,我已强制将getInstance同步,因此仅出于测试方面,它将对实际应用程序产生负面影响。有没有解决的办法,由于Java中双重锁定模式的破坏性,似乎其他

  • 我在想Spring中bean的懒惰初始化。对我来说,这里的“懒惰”是否意味着当一个bean被引用时会被创建并不十分清楚。 我认为Spring中的延迟初始化支持是不同的。我认为这是一个基于“方法调用”的惰性创建。我的意思是,每当对该方法调用任何方法时,都会创建该方法。 我认为这可以通过创建特定bean的代理实例并对任何方法调用进行初始化来轻松解决。 我是否遗漏了一些东西?为什么没有实施?这个概念有什

  • 在某些情况下,我的广播接收器是不需要的,所以需要检查接收器是否为空,但有些如何这个对象不为空,即使不使用它和造成崩溃。

  • 问题内容: 我有一个初始化为的变量: 问题是,在某个时候,我需要重置此变量,以便在更改后可以再次初始化。但是如果我将类设置为可选的话,LLVM在尝试将它设置为时会给我一个错误。如果我只是使用将其重置在代码中的某个位置,它将最终显示为。 有没有一种方法可以使用并允许自己重置? 问题答案: 懒惰是明确的仅一次初始化。您要采用的模型可能只是按需初始化模型: 现在,只要是,它会被初始化并返回。可以通过设置