栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

当使用React钩子和备忘录时,如何防止子组件重新呈现?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

当使用React钩子和备忘录时,如何防止子组件重新呈现?

在您的情况下,记住Child并不真正有意义,因为如果项发生更改,则必须重新渲染child。但是,如果情况不变,道具仍然不变,但由于重新创建了功能,仍然在重新渲染孩子,则您将

useCallback
在每个渲染上使用钩子来记住功能。另外,由于已经记住了处理程序,因此应该使用回调方法来更新状态,因为
item
处理程序内部将仅引用最初创建函数时所具有的值。

function Parent() {  const [item, setItem] = useState({ name: "item", value: 0 });  const handleChangeItem = useCallback(() => {    setItem(prevItem => ({ ...prevItem, value: prevItem.value + 1 }));  }, []);  return (    <>      Name: {item.name} Value: {item.value}      <Child changeItem={handleChangeItem} />    </>  );}const Child = React.memo(function Child({ item, changeItem }) {  function handleClick() {    changeItem();  }  console.log("child render");  return (    <div>      <button onClick={handleClick}>change state in parent</button>    </div>  );});

工作演示

PS
感谢@danAbramov提供指导



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/608877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号