react: многократная инициализация внутри функционального компонента
Написал такой отладочный код:
import React, { useState } from 'react';
import { Button } from 'antd';
// компонент отображения страниц
const App: React.FC = () => {
const handleClick = () => {
dbgSetValue(old => old + 1);
}
// контроль состояний
const [dbg] = useState(console.log('dbg'));
const [dbgValue, dbgSetValue] = useState(0);
// отрисовать компонент
return (
<Button onClick={handleClick}>Жми</Button>
);
}
export default App;
каждый раз при нажатии на кнопку выводится dbg
, т.е. вызывается useState
.
у меня скорее всего не совсем точное понимание работы функциональных компонент, потому что я думал, что useState
вызывается однократно при многократных перерисовках компонента, однако похоже это не так.
Отсюда вопрос:
Мне необходимо, чтобы вне зависимости от кол-ве отрисовок компонента внутри сохранялось бы некоторое значение. Как это лучше сделать?
Я думал, что смогу использовать useState для однократной инициализации такого значения, например если в качестве параметров передается некоторый класс, то я мог бы создать однократно ВНУТРИ компонента объект класса и работать с ним:
[target] = useState(new props.MyTarget)
Но очевидно такой подход не работает. Как же быть?
Мне очень не хотелось бы этот объект target
делать внешним для данного компонента, хотелось бы однократно инициализировать внутри компонента и работать с ним вне зависимости что происходит с компонентом - какие состояния меняются, что делают дочерние компоненты и т.д.