Как вызывать мультисеттеры useState реагируют на хуки - PullRequest
3 голосов
/ 12 марта 2019

Я хочу вызвать функцию множественного реагирования hook вместе, когда какое-то событие было вызвано Sth, например:

const [running, setRunning] = useState(false);
const [jumping, setJumping] = useState(true);

, что мы должны делать, если мы хотим setRunning и setJumpingвсе вместе?(избегайте повторного рендеринга компонента)

1 Ответ

6 голосов
/ 12 марта 2019

Вы можете просто вызвать их последовательно, как это ( демо ):

const Comp = ({ flag }) => {
  const [running, setRunning] = useState(false);
  const [jumping, setJumping] = useState(false);

  const setBoth = () => {
    setRunning(true);
    setJumping(true);
  };

  return (
    <>
      {"running: " + running}
      {"jumping: " + jumping}
      <button onClick={() => setBoth()}>setboth</button>
    </>
  );
};

В качестве альтернативы, вы можете установить их оба одновременно, как это:

const Comp = ({ flag }) => {
  const [RJ, setRJ] = useState([false, false]);

  const setBoth = () => {
    setRJ([true, true]);
  };

  return (
    <>
      {"running: " + RJ[0]}
      {"jumping: " + RJ[1]}
      <button onClick={() => setBoth()}>setboth</button>
    </>
  );
};

https://codesandbox.io/s/0pwnm2z94w

...