这个问题与eslint-plugin-react-hooks
当我在 CodeSanbox 中使用 React Sandbox 时,我可以使用 props 对象的单个属性作为 useEffect 挂钩的依赖项:
示例 1:
useEffect(()=>{
console.log('Running useEffect...');
console.log(typeof(props.myProp)); // USING ONLY 'myProp' PROPERTY
},[ ]); // EMPTY ARRAY
示例 1在 CodeSandbox 环境中给了我以下警告:
React Hook useEffect 缺少一个依赖项:'props.myProp'。包括它或删除依赖数组。(react-hooks/exhaustive-deps) eslint
如果我添加[props.myProp]
到数组中,警告就会消失。
但是在我的本地环境中的 VSCode 中的相同示例 1,我收到以下警告:
React Hook useEffect 缺少依赖项:'props'。包括它或删除依赖数组。但是,当任何道具发生变化时,“道具”会发生变化,因此首选的解决方法是在 useEffect 调用之外解构“道具”对象,并在 useEffect.eslint(react-hooks/exhaustive-deps) 中引用那些特定的道具
是问我我错过了完整的props
对象。如果我添加[props.myProp]
到数组中,警告不会消失。尽管代码按预期工作。
我希望我会在 VSCode 的本地环境中获得与 CodeSandbox 相同的行为。
会发生什么?有什么我可以改变的配置eslint-plugin-react-hooks
吗?
包裹
开发:
"eslint": "^5.10.0",
"eslint-plugin-react": "^7.11.1",
"eslint-plugin-react-hooks": "^1.6.1",
常规的
"react": "^16.8.6",
"react-dom": "^16.8.6",
.eslintrc.json
{
"root" :true,
"env": {
"browser": true,
"commonjs": true,
"es6": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:react/recommended",
"plugin:import/errors"
],
"parser":"babel-eslint",
"parserOptions": {
"ecmaVersion": 8,
"sourceType": "module",
"ecmaFeatures": {
"jsx":true
}
},
"plugins":[
"react",
"react-hooks"
],
"rules": {
"react/prop-types": 0,
"semi": "error",
"no-console": 0,
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn"
},
"settings": {
"import/resolver" : {
"alias" : {
"map" : [
["@components","./src/components"],
["@constants","./src/constants"],
["@helpers","./src/helpers"]
],
"extensions": [".js"]
}
}
}
}