LoginSignup
1
0

More than 5 years have passed since last update.

eslint-plugin-react@6.9.0にアップグレードしたら`react/require-default-props`で怒られた

Last updated at Posted at 2017-01-12

PropTypesでまたハマったので備忘録を残す。

とりあえずeslint-plugin-react周りをアップデート

eslint-plugin-react周りが、eslint-plugin-jsx-a11yに対応してくれたみたいなので、
こんな感じでアップデートしたら、またeslintが騒ぎ出した。

package.json
diff --git a/package.json b/package.json
@@ -43,12 +43,12 @@
     "babel-preset-stage-3": "6.17.0",
     "babel-runtime": "^6.20.0",
     "css-loader": "^0.26.1",
-    "eslint": "^3.12.2",
-    "eslint-config-airbnb": "^13.0.0",
+    "eslint": "^3.13.1",
+    "eslint-config-airbnb": "^14.0.0",
     "eslint-loader": "^1.6.1",
     "eslint-plugin-import": "^2.2.0",
-    "eslint-plugin-jsx-a11y": "^2.2.3",
-    "eslint-plugin-react": "^6.8.0",
+    "eslint-plugin-jsx-a11y": "^3.0.2",
+    "eslint-plugin-react": "^6.9.0",

考察

下記を見るに、{props.children}で渡してるところのpropTypeが悪いようだ。
最初は、型名が変わったのかなと思ったけど、Requiredなら明記しろってことみたい。

該当するコード

Template.jsx
import Helmet from 'react-helmet';

const Template = props => (
  <div>
    <Helmet defaultTitle="jey3dayo.net" />
    {props.children}
  </div>
);

Template.propTypes = {
  children: React.PropTypes.shape({}),
};

export default Template;

警告内容

app/containers/Template.jsx
  14:3  error  propType "children" is not required, but has no corresponding defaultProp declaration  react/require-default-props

対応

上記で述べた通り、isRequired追記したら黙った。
今後は、propTypes書くときは、Requiredなものか明示的に記載しなければならないようだ。

Template.jsx
diff --git a/containers/Template.jsx b/containers/Template.jsx
index 750be92..6dde794 100644
--- a/containers/Template.jsx
+++ b/containers/Template.jsx
@@ -9,8 +9,7 @@ const Template = props => (
 );

 Template.propTypes = {
-  children: React.PropTypes.shape,
+  children: React.PropTypes.shape.isRequired,
 };

 export default Template;
1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0