Запретите несколько рендеров при установке нескольких setState (s) друг за другом - PullRequest
0 голосов
/ 05 марта 2020

Я вызвал несколько setState (s) в строке, которая вызывает несколько рендеров в моем реактивном проекте.

const [isLoading, setIsLoading] = useState(false);
const [entities, setEntities] = useState([]);

// ...
// somewhere in the code
setEntities(result); // cause render
setIsLoading(false); // cause render

Как я могу предотвратить несколько рендеров? ( Вместо объединения этих состояний в объект )

1 Ответ

1 голос
/ 05 марта 2020

Зависит от того, откуда setStates вызывается. Обычно они объединяются вместе и запускают один рендеринг. Однако, если они вызываются из некоторого асинхронного кода, Response не может объединить их вместе. Вы можете прочитать больше об этом поведении здесь

Если вы хотите обойти это поведение, вы можете, например, использовать useReducer, который не страдает от этого проблема в том, что вам нужно только одно обновление для изменения данных в разных местах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...