Допустим, у меня есть некоторая переменная состояния width
, и я знаю, что она никогда не изменится, но мне нужно выполнить некоторые вычисления на ней, основываясь на пропе, который я получаю. Я не хочу делать это в теле функции, так как она будет выполняться при каждом повторном рендеринге. Итак:
const SOME_CONSTANT_NUMBER = 50;
const someFunc = ({multiplier: number}) => {
const [width, setWidth] = useState(SOME_CONSTANT_NUMBER * multiplier);
return (
<div>
{width}
</div>
);
}
Теперь я также создал функцию setWidth
, которую никогда не буду использовать.
Я мог бы использовать ловушку для запуска только при монтировании, но это больше кода и не нужно.
const SOME_CONSTANT_NUMBER = 50;
const someFunc = ({multiplier: number}) => {
const [width, setWidth] = useState(0);
useHook(() => {
const updatedWidth = SOME_CONSTANT_NUMBER * multiplier;
setWidth(updatedWidth);
}, []);
return (
<div>
{width}
</div>
);
}
Я думаю, что худший подход будет ниже, так как он будет рассчитывать его при каждом повторном обращении:
const SOME_CONSTANT_NUMBER = 50;
const someFunc = ({multiplier: number}) => {
const width = SOME_CONSTANT_NUMBER * multiplier;
return (
<div>
{width}
</div>
);
}
* Обратите внимание, что этот пример прост, но предположим, что реквизитов намного больше, и что вычисления для этого width
вычислительно тяжелые.