реагировать на ловушки: уменьшать повторное рендеринг при установке другого состояния - PullRequest
0 голосов
/ 04 июля 2019

Как уменьшить вызовы рендеринга, если мне нужно обновить два разных состояния в функции setTimeout или async. Похоже, что эти два набора вызовов не будут пакетными.

И я не хочу объединять два состояния в одно.

// render once!
function Component () {
  const [a, setA] = useState(0);
  const [b, setB] = useState(0);
  const update = () => { setA(1); setB(1); }
  useEffect(() => { update() }, []);
  return (<div>{a}{b}</div>);
}

// render twice!
function Component () {
  const [a, setA] = useState(0);
  const [b, setB] = useState(0);
  const update = () => { setA(1); setB(1); }
  useEffect(() => {
    setTimeout(() => { update(); })
  }, []);
  return (<div>{a}{b}</div>);
}
...