2017-12-22 2 views
0

eslintプロップ型エラーをトリガ:が(これは単なるデモ用である複数のプロパティを有する)Iは、以下のような単純なステートレスな成分を有する

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

import MyDropdown from '...' 

function renderDropdown (props) { 
    return props.isOpened && <MyDropdown /> 
} 

const MyComponent = function (props) { 
    return (
    <div className='my-component'> 
     {renderDropdown(props)} 
    </div> 
) 
} 

MyComponent.propTypes = { 
    isOpened: PropTypes.bool 
} 

MyComponent.defaultProps = { 
    isOpened: false 
} 

export default MyComponent 

私が検証する場合私は、必要なプロパティを渡す場合、または私は、レンダリングの内側に関数を移動した場合

enter image description here

:それはestlintで、それはこのような小道具の検証に欠けている性質があることを言って多くのエラーをスローしますそれは完全に動作します。

+0

ありがとうございました! @ YuryTarabanko –

+0

これらのエラーはどこを指していますか?あなたはそのファイルを共有できますか? –

答えて

1

これは、次のESLintの問題に関連した問題のように見える:複数の人が言及している最初の問題では、

単純なtyによって引き起こされる可能性がありますpoのように、propTypesの代わりにPropTypesを使用します。私はあなたのコードの上記(MyComponent.propTyps)のタイプミスを参照してくださいが、それは問題の疑いのサンプルコードです。

たもので言及した別の潜在的な問題はthis.propsを構造化代入することによるものであり、修正が使用this.propsのな破壊を避けるためです:

const props = this.props; 

を、代わりに次のいずれかと一緒に行く:

const {items, checked, onCheck} = this.props; 

か長さ構文を使用してプロパティを選択する:

this.props.items 

または新しい変数にthis.propsを割り当てる:

const myProps = this.props 

はしかし、また、修正はhttps://github.com/yannickcr/eslint-plugin-react/pull/1605に提案されている表示されますので、あなたは待つだけと修正が押されたときESLintを更新する必要があります。

+0

'' 'props'''はprop-typesバリデーションを駄目にする予約語です。解決方法は簡単ですが、 '' renderDropdown''関数のパラメータを '' 'props'''以外の名前に変更しました。 –

+0

ええ、それは問題で推奨される方法の1つでした。修正のような音が鳴り出しているので、ESLintが利用可能になったらそれを更新し、標準の命名規則に戻す必要があります。 –

+0

とにかく、あなたの答えが私を大いに助けました。私はそれを受け入れることができるように、さらなる情報を加えてください。 –

関連する問題