Reactjs 如何配置eslint规则以全局忽略react hook/dep?
我有一个带有useEffect钩子的react组件,如下所示:Reactjs 如何配置eslint规则以全局忽略react hook/dep?,reactjs,typescript,eslint,eslintrc,typescript-eslint,Reactjs,Typescript,Eslint,Eslintrc,Typescript Eslint,我有一个带有useEffect钩子的react组件,如下所示: const LocationEditor: React.FC<SectionEditorProps> = (props) => { const [section, setSection] = useState({...(props.section as Location)}); useEffect(() => { props.onChange(section); }, [section]); 所以我
const LocationEditor: React.FC<SectionEditorProps> = (props) => {
const [section, setSection] = useState({...(props.section as Location)});
useEffect(() => {
props.onChange(section);
}, [section]);
所以我试着把组件改成这样,分解道具:
const LocationEditor: React.FC<SectionEditorProps> = ({section, onClickCancel, onClickSave, onChange}) => {
const [tmpSection, setSection] = useState({...(section as Location)});
useEffect(() => {
onChange(tmpSection);
}, [tmpSection]);
但是,当我将下面的块添加到package.json
中的eslintConfig
中时,它似乎没有做任何事情:
{
"plugins": [
"react-hooks"
],
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "off"
}
}
我看到一些人在谈论使用.eslinrc
文件,但我认为您也可以在package.json
中全局配置规则,而我在项目中找不到该文件
这里有我遗漏的东西吗?不要禁用。这条规则已经过测试和重新测试,如果不比任何其他ESLint规则多的话,也会受到战争创伤和探索 我也认为我知道的更多。但我们都不知道。不要禁用它,相信我,它比你我都清楚。我也去过那里
按照规定去做,如果它破坏了你的应用程序,你会很高兴,因为它免费为你发现了一个bug,你应该修复它,而不是强迫你的应用程序工作。这几乎可以肯定是一个错误。只需将
onChange
函数放入依赖项数组中。为什么每个人都对Facebook团队使用的工具做出反应,告诉他们他们可能做错了什么,然后马上就想扔掉这个工具?我意识到不仅仅是你,我们一直在反应标签上写着这个问题,它总是让我感到惊讶…谢谢!这很有帮助。基本上,我是这样修正的:承认禁用这条规则是个坏主意,对于我们这些顽固的人来说,有一个答案仍然是件好事。链接的答案并没有解决package.json配置似乎被忽略的问题。谢谢!根据上面的评论修复了它。谢谢你的帮助。
// eslint-disable-next-line react-hooks/exhaustive-deps
{
"plugins": [
"react-hooks"
],
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "off"
}
}