react hook useMemo

女生的网名这么多〃 提交于 2020-08-08 08:10:34

类似vue的computed

只有在a变化后,才重新计算c, 用于过滤不必要的计算

useMemo在渲染期间执行, 此时不要进行dom处理

import React, { useState, useEffect, useMemo } from "react";
const doJob = (a, b) => {
  console.log("doJob", a, b);
  return [a, "---", b].join("");
};
export default () => {
  const [a, setA] = useState(0);
  const [b, setB] = useState(0);

  // 这种情况下, 每次a,b只要有一个变化, 都会重新执行这个函数
  //   const c = doJob(a, b);

  // 只有当a变化时, 才重新计算c的属性
  const c = useMemo(() => {
    return doJob(a, b);
  }, [a]);

  return (
    <div>
      <div>
        a:{a}, b:{b}, c:{c}
      </div>
      <button onClick={() => setA((c) => c + 1)}>add a</button>
      <button onClick={() => setB((c) => c + 1)}>add b</button>
    </div>
  );
};

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!