更新于

React杂项


useState:值变了,页面会重新渲染。 useRef:值变了,页面不会重新渲染。(useRef means use reference)

方式能不能跨渲染记住改了会不会重新渲染
普通变量不能稳定记住不会
useState
useRef不会

useState 是“给页面看的数据”,useRef 是“给代码自己记着用的数据”,普通变量是“当前这次执行临时用一下的数据”。 要不要触发界面更新,是 useState 和 useRef 最核心的区别。

useMemo 简单说就是: 缓存一个“计算结果”,依赖没变就直接复用,依赖变了才重新计算。 (返回一个结果)

语法是:

const result = useMemo(() => {
  return 计算结果;}, [依赖]);

  const total = useMemo(() => {
  return price * count;
}, [price, count]);//只有 price 或 count 变了,才重新算
不用调用total()即可得到结果

而useCallBack则是缓存函数本身,返回函数本身

const handleClick = useCallback(() => {
  console.log(price * count);
}, [price, count]);
//price 或 count 变了,才重新创建这个函数。
只有调用handleClick()才得到结果

依赖数组 []:表示只在组件挂载/初始化时执行或创建一次,后续重新渲染不会重复执行。
但如果 Hook 内部用到了会变化的外部 state/props,就不能随便写空数组,否则可能拿到旧值。

评论

使用 GitHub 登录后即可参与讨论。

不可发布任何违反中华人民共和国有关法律的内容。违者评论将被删除且拉黑处理。