2017-06-13 53 views
-2

我已經使用了下面的代碼,但是得到了上面的eslint錯誤。eslint:'isResetProperty'在道具驗證中缺失(react/prop-types)

componentWillReceiveProps(nextProps) { 
     if (nextProps.isResetProperty) { 
      this.setState({ empName: defaultEmpName }); 
      this.setState({ empAddress: defaultEmpAddress }); 
      this.props.resetPage(false); 
     } 
     } 
    "devDependencies": { 
    "eslint": "^3.18.0", 
    "eslint-config-airbnb": "^14.1.0", 
    "eslint-plugin-import": "^2.2.0", 
    "eslint-plugin-jsx-a11y": "^4.0.0", 
    "eslint-plugin-react": "^6.10.3", 
} 

我怎樣才能解決這個錯誤:[eslint]「isResetProperty」在道具驗證缺失(反應/道具類型)。請幫助我。

回答

1

您需要聲明isResetProperty屬性的類型。 About PropTypesAbout this rule

全部實施例

// index.js 
import { Component } from 'react' 
import PropTypes from 'prop-types' 

export default class Cmp extends Component { 
    static propTypes = { 
    isResetProperty: PropTypes.bool.isRequired, 
    } 

    componentWillReceiveProps(nextProps) { 
    if (nextProps.isResetProperty) { 
     this.setState({ 
     reset: nextProps.isResetProperty, 
     }) 
    } 
    } 

    render() { 
    return null 
    } 
} 

的package.json

"scripts": { 
    "lint": "eslint ." 
    }, 
    "devDependencies": { 
    "babel-eslint": "^7.2.3", 
    "eslint": "3", 
    "eslint-config-airbnb": "^15.0.1", 
    "eslint-plugin-import": "^2.3.0", 
    "eslint-plugin-jsx-a11y": "^5.0.3", 
    "eslint-plugin-react": "^7.0.1" 
    }, 
    "dependencies": { 
    "prop-types": "^15.5.10", 
    "react": "^15.5.4" 
    } 

.eslintrc

{ 
    "extends": "airbnb", 
    "parser": "babel-eslint", 
    "rules": { 
    "semi": [2, "never"] 
    } 
} 

>$ yarn run lint

紗線運行v0.24.6 $ eslint。 完成在1.32s。

+0

它不會因爲在上面的代碼中,我們使用nextProps.isResetProperty工作,如果是使用像this.props.isResetProperty您的代碼將工作。 – jack123

+0

@ jack123你真的試過了嗎?我不知道你有哪個版本。我的工作就像一個魅力。 –

+0

我使用「eslint」:「^ 3.18.0」, – jack123

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

class YourComponentName extends React.Component { 

    componentWillReceiveProps(nextProps) { 
    if (nextProps.isResetProperty) { 
     this.setState({ empName: defaultEmpName }); 
     this.setState({ empAddress: defaultEmpAddress }); 
     this.props.resetPage(false); 
    } 
    } 
}; 

YourComponentName.propTypes = { 
    isResetProperty: PropTypes.<type-of-isResetProperty> 
} 
+0

它不會工作,因爲在上面的代碼中我們使用的是nextProps.isResetProperty,如果使用this.props.isResetProperty,你的代碼將會工作。 – jack123