Reactjs 功能更新导致eslint无阴影错误

Reactjs 功能更新导致eslint无阴影错误,reactjs,eslint,eslint-plugin-react-hooks,Reactjs,Eslint,Eslint Plugin React Hooks,我正在使用React-useEffect更新状态。Eslint警告说我没有出现阴影错误。我认为这与一些eslint或eslint插件设置有关,因为CRA不会导致相同的错误。如何修复它 function Sample(props) { const { flag } = props; const [value, setValue] = useState(); useEffect(() => { if (flag) { setValue(value =>

我正在使用React-useEffect更新状态。Eslint警告说我没有出现阴影错误。我认为这与一些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中声明而不会产生阴影。

eslint正确地抱怨,因为您在
useState
钩子中声明了一个
value
变量,但在
Useffect
钩子中声明了另一个名为
value
的变量

最简单的修复方法是不通过更改
setValue
调用中的变量来隐藏变量名-

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

谢谢我还发现,从eslint的扩展中删除“airbnb”选项可以解决这个问题。@SungwooPark-是的,这可能也会起作用,但您正在削弱linter-它给您的警告是有效的,值得更改代码,否则可能会导致意外错误!