在道具验证react / prop-types中缺少

时间:2017-04-28 17:57:36

标签: javascript html css reactjs redux

  • 我是js的新手。
  • 修复了其他不能修复道具lint错误的lint错误
  • 我得到一个下面的lint错误,谷歌搜索错误无法解决问题。 17:20错误'playerLaughing'在道具验证react / prop-types

  • 中缺失
  • 提供以下代码

  • 你能告诉我如何解决它吗
C:\workspace\sports-dia-dashboard\src\components\sample-player\player-section.jsx
  17:20  error    'playerLaughing' is missing in props validation     react/prop-types
  17:40  error    'id' is missing in props validation           react/prop-types
  23:9   warning  Unexpected var, use let or const instead      no-var
  23:53  error    'jumping' is missing in props validation     react/prop-types
  28:32  warning  There should be no space before '='           react/jsx-equals-spacing
  28:32  warning  There should be no space after '='            react/jsx-equals-spacing
  30:37  error    'flying' is missing in props validation        react/prop-types
  33:21  warning  Empty components are self-closing             react/self-closing-comp
  44:3   error    Expected indentation of 4 spaces but found 2  indent



import React from 'react';


class Swimming extends React.Component {
    constructor(props) {
        super(props);
        this.playerLaughing = this.playerLaughing.bind(this);
    }

    playerLaughing() {
          //console.log("playerLaughing");
         // debugger;
        this.props.playerLaughing(this.props.id);
    }

    render() {
          //console.log("render");
          //console.log("accordion / the ExpandCollapse Section component");
        var className = 'player-section' + (this.props.jumping ? ' jumping' : '');

        return (
            <div className={className} onClick={this.playerLaughing}>

                <div className = "sports-player-question-flying sports-submenu-dropmenuHeader">
                    <h3>
                        {this.props.flying}
                    </h3>

                    <div className="up-arrow"></div>
                </div>

                <div className="body">
                    {this.props.children}
                </div>


            </div>
        );

  }

}


export default Swimming;

2 个答案:

答案 0 :(得分:7)

您需要在组件上设置静态属性“propTypes”以满足此lint错误。

以下是有关React PropTypes的一些信息:React Docs

您可以添加与此类似的部分:

import React from 'react';
import PropTypes from 'prop-types';

class Swimming extends React.Component {
 static propTypes = {
   jumping: PropTypes.bool,
   playerLaughing: PropTypes.func
 };
 constructor(props) {
 ...
}

您需要安装'prop-types'npm包。

答案 1 :(得分:6)

您应该将propTypes添加到您的组件中:
例如:

// this goes outside the class deceleration 
Swimming.propTypes = {
    playerLaughing: PropTypes.func,
    jumping: PropTypes.bool,
    //... other props you will use in this component
};  

如果您希望它在class减速范围内,您可以使用静态类字段,如下所示:

// this goes inside the class deceleration
static propTypes = {
        playerLaughing: PropTypes.func,
        jumping: PropTypes.bool,
        //... other props you will use in this component
    };
}; 

您应该安装并导入PropTypes。请参阅Docs

npm install --save prop-types
import PropTypes from 'prop-types'; // ES6 
var PropTypes = require('prop-types'); // ES5 with npm