React перехватывает функциональное обновление, вызывает ошибку eslint no-shadow - PullRequest
1 голос
/ 30 января 2020

Я использую React useEffect для обновления состояния. Эслинт предупреждает, что я делаю ошибку без тени. Я думаю, что это связано с некоторыми настройками плагина eslint или eslint, потому что CRA не вызывает ту же ошибку. Как это исправить?

function Sample(props) {
  const { flag } = props;
  const [value, setValue] = useState();

  useEffect(() => {
    if (flag) {
      setValue(value => value + 1);
    }
  }, [flag]);
}

Здесь setValue(value => value + 1); значение не вызывает тени из-за объявленного на useState.

1 Ответ

2 голосов
/ 30 января 2020

eslint правильно жалуется, потому что вы объявили value переменную в вашем useState хуке, но затем вы повторно объявляете другую переменную с именем value в вашем useEffect хуке .

Самое простое решение - не скрывать имя переменной, меняя переменную в вашем вызове setValue -

useEffect(() => {
  if (flag) {
    setValue(prev => prev + 1);
  }
}, [flag]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...