Он не будет отображаться снова, но в то же время будет ждать окончания вычислений, потому что это синхронная операция, не может обрабатывать начальные вычисления асинхронно.
Лучший вариант с точки зрения пользовательского опыта и производительности приложений - чтобы избежать больших расчетов при создании объектов состояния с useState()
. Вместо этого вы можете использовать useEffect()
:
Хук эффектов позволяет выполнять побочные эффекты в компонентах функций.
Например, с пустым массивом зависимостей оно будет выполнено только один раз:
const [result, setResult] = useState(null);
useEffect(() => {
const value = someExpensiveComputation(props);
setResult(value);
}, []);
В конце это решение снова вызовет рендеринг, но вы можете обработать его в своем выражении return
, как показано ниже:
return <>
{
result && <p>Result: {result}</p>
}
<>
I надеюсь, что это поможет!