当前位置: 首页 > 面试题库 >

为什么React Hook useState使用const而不是让

翟棋
2023-03-14
问题内容

以下是使用React useState Hook的标准方法:

const [count, setCount] = useState(0);

但是,const count显然要将此变量重新分配给其他原始值。

为什么变量没有定义为let count


问题答案:

显然将被重新分配给其他原始值

并不是的。重新呈现组件后,将再次执行该函数,从而创建新的作用域,创建新的count变量,该变量与先前的变量无关。

例:

let _state;

let _initialized = false;

function useState(initialValue) {

  if (!_initialized) {

    _state = initialValue;

    _initialized = true;

  }

  return [_state, v => _state = v];

}



function Component() {

  const [count, setCount] = useState(0);



  console.log(count);

  setCount(count + 1);

}



Component();

Component(); // in reality `setCount` somehow triggers a rerender, calling Component again

Component(); // another rerender

注意: 挂钩更为复杂,实际上并未像这样实现。这只是为了演示类似的行为。



 类似资料:
  • 在g中运行下面的代码将导致以下错误: 错误:将“const A”传递为“this”参数会丢弃限定符[-fpermissive] 我们在哪里使用? F允许意味着代码不一致。标准在哪里规定这是一个错误?

  • 很多人问了此问题,说bzero已经被posix-2008废弃,为何还使用bzero。选择bzero而不是memset,有2个原因: bzero有2个参数,指针和长度,很明确就是将制定size的内存初始化为0。而memset有3个参数,需要记忆参数的位置,有不少人经常把长度和初始化值搞错。 bzero比memset的可读性要好。memset可以制定初始化的值,实际上绝大多数情况都是0。 一旦新版本g

  • 问题内容: 我不确定为什么列出项目时为什么需要使用ul-li而不是简单地使用div。我可以使两者看起来完全一样,因此与创建div相比,创建无序列表的功能优势在哪里? 问题答案: 为了语义正确。HTML具有表达事物列表的功能,它可以帮助Google机器人,屏幕阅读器以及所有不仅仅关心网站外观的用户更好地了解您的内容。

  • 问题内容: 的OpenJDK代码包括以下行: 为什么在这里使用,而不是?我很好奇。 问题答案: 要强调的是,数字是2的幂,而不是一个完全任意的选择。因此,它警告开发人员尝试不同的数字,他们应该在模式中使用其他数字(例如或,而不是),这样他们就不会破坏依赖于两个要求的幂的方法。有评论略高于: 任何一个的容量(表长度)始终是2的幂。之所以这样设计,是因为它允许使用快速的按位AND操作()将每个键的哈希

  • 我花了很多时间来解决这个问题。我是GRAILS和GROOVY中的begginer。我有一个名为“tms\u dev”的旧oracle数据库模式。此架构有一些表(例如checktypes表)。此外,我还有由GRAILS生成的域类Checktype和ChecktypesController类-controller。 此类具有列表方法: def列表(最大整数){ } 我还配置了Datasource。gr

  • 问题内容: 我想知道为什么Arrays类的sort方法要求一个Object []类型的参数。为什么参数不是Comparable []类型。如果不传递Comparable [],它将生成ClassCastException。 为什么… public static void sort(Object [] a) 而不是 public static void sort(Comparable [] a) ?