亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的 useMemo useCallback 不會減少渲染次數。

我的 useMemo useCallback 不會減少渲染次數。

蝴蝶刀刀 2022-10-21 14:37:48
function CountBtn1({ onClick, count }) {  console.log('CountBtn1 render')  return <button onClick={onClick}>{count}</button>}function CountBtn2({ onClick, count }) {  console.log('CountBtn2 render')  return <button onClick={onClick}>{count}</button>}function Counter() {  const [count1, setCount1] = React.useState(0)  // const increment1 = () => setCount1(c => c + 1)  const increment1 = React.useCallback(() => setCount1(c => c + 1), [])  const [count2, setCount2] = React.useState(0)  // const increment2 = () => setCount2(c => c + 1)  const increment2 = React.useCallback(() => setCount2(c => c + 1), [])  return (    <>      <CountBtn1 count={count1} onClick={increment1} />      <CountBtn2 count={count2} onClick={increment2} />    </>  )}當我單擊 Button1` 時也會渲染日志是CountBtn1 渲染CountBtn2 渲染我的 useMemo useCallback 不會減少渲染次數。使用 useMemo 和 useCallback 的正確方法是什么?
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

用備忘錄包裝你的組件:


const CountBtn1 = React.memo(function CountBtn1({ onClick, count }) {

  console.log('CountBtn1 render')

  return <button onClick={onClick}>{count}</button>

})


const CountBtn2 = React.memo(function CountBtn2({ onClick, count }) {

  console.log('CountBtn2 render')

  return <button onClick={onClick}>{count}</button>

})


查看完整回答
反對 回復 2022-10-21
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號