Нет, вам не нужно добавлять setStr
, так как он не изменится в течение срока службы компонента.Но добавление его также не сильно вредно, поскольку оно не изменится.
Из useState
реагирующих документов :
Примечание
React гарантирует, что идентификатор функции setState
стабилен и не изменится при повторном рендеринге.Вот почему это безопасно исключить из списка зависимостей useEffect
или useCallback
.
Но вы обязательно должны удалить str
.Состояние не должно обновляться в зависимости от текущего состояния, поскольку реагирует на несколько вызовов на setState
.Это может привести к тому, что обновления будут происходить за короткий промежуток времени и будут потеряны.Вместо этого используйте версию обратного вызова setState
:
const Example: FC = (props) => {
const [str, setStr] = useState('example');
const onClickCb = useCallback(() => setStr(current => `${current}_`)), []);
return <button onClick={onClickCb}>{str}</button>;
};