react hooks 之 memo

2021-11-30  本文已影响0人  RickyWu585
const App = () => {
  const [n, setN] = useState(0)
  const [m, setM] = useState(0)
  const onClick = () => {
    setN(i => i + 1)
  }
  const onClick2 = () => {
    setM(i => i + 1)
  }
  return (
    <div>
      <div>
        <button onClick={onClick}>button1: update n {n}</button>
        <button onClick={onClick2}>button2: update m {m}</button>
      </div> 
      <Child2 data={m}/>
    </div>
  )
}
const Child = (props) => {
  console.log('child执行了');
  return (
    <div>child:{props.data}</div>
  )
}

const Child2 = React.memo(Child)
const App = () => {
  const [n, setN] = useState(0)
  const [m, setM] = useState(0)
  const onClick = () => {
    setN(i => i + 1)
  }
  const onClick2 = () => {
    setM(i => i + 1)
  }
  const onClickChild = () => {
    
  }
  return (
    <div>
      <div>
        <button onClick={onClick}>button1:update n {n}</button>
        <button onClick={onClick2}>button2:update m {m}</button>
      </div>
      <Child2 onClick={onClickChild} data={m}/>
    </div>
  )
}
const Child = (props) => {
  console.log('child执行了');
  return (
    <div onClick={props.onClick}>child:{props.data}</div>
  )
}

const Child2 = React.memo(Child)
const App = () => {
  const [n, setN] = useState(0)
  const [m, setM] = useState(0)
  const onClick = () => {
    setN(i => i + 1)
  }
  const onClick2 = () => {
    setM(i => i + 1)
  }
  const onClickChild = useMemo(()=>{
    return ()=>{}
  },[m])  
// 这里加m这个依赖的原因是,这个函数可能用到了m,意思是只有m变化了,才重新生成一个新的函数
  return (
    <div>
      <div>
        <button onClick={onClick}>update n {n}</button>
      </div>
      <Child2 onClick={onClickChild} data={m}/>
    </div>
  )
}
const Child = (props) => {
  console.log('child执行了');
  return (
    <div onClick={props.onClick}>child:{props.data}</div>
  )
}

const Child2 = React.memo(Child)
const App = () => {
  const [n, setN] = useState(0)
  const [m, setM] = useState(0)
  const onClick = () => {
    setN(i => i + 1)
  }
  const onClick2 = () => {
    setM(i => i + 1)
  }
  const onClickChild = useCallback(
    () => {
    }, [m]
  )
  return (
    <div>
      <div>
        <button onClick={onClick}>update n {n}</button>
        <button onClick={onClick2}>update m {m}</button>
      </div>
      <Child2 onClick={onClickChild} data={m}/>
    </div>
  )
}
const Child = (props) => {
  console.log('child执行了');
  return (
    <div onClick={props.onClick}>child:{props.data}</div>
  )
}

const Child2 = React.memo(Child)
上一篇 下一篇

猜你喜欢

热点阅读