.concat()
не изменяет Array
;он возвращает новый массив, содержащий конкатенацию. Таким образом, эта строка устанавливает pizzas state при следующем рендеринге в массив с новым элементом:
setPizzas(pizzas.concat([{type, size, dough, price}]));
... потому что она как бы переводит в это:
const newPizzas = pizzas.concat([{type, size, dough, price}]);
setPizzas(newPizzas);
... но локальная переменная pizzas
, которую вы регистрируете, не изменяется. Однако при следующем вызове useState
новое значение будет иметь pizzas
.