2016-03-12 11 views
15

私はこれがあります。「ステートレス機能コンポーネントはrefsを指定できません」とはどういう意味ですか?

const ProjectsSummaryLayout = ({projects}) => { 
    return (
     <div className="projects-summary col-md-10"> 
      <h3>Projects</h3> 
      <ul> 
       { projects.map(p => <li key={p.id}>{p.contract.client}</li>) } 
      </ul> 
     </div> 
    ) 
} 

const ProjectsSummary = connect(
    state => ({projects: state.projects}) 
)(ProjectsSummaryLayout) 

をし、私が取得:

警告:ステートレス機能コンポーネントは、REFを与えることはできません( 接続(ProjectsSummaryLayout)によって作成されたProjectsSummaryLayoutのRef "wrappedInstance" を参照してください)。この参照にアクセスしようとすると、 は失敗します。

私に教えてください。私は実際何か間違っているのですか?

私はこれについての議論を参照してくださいhereしかし、残念ながら私は単に結論を理解していません。

答えて

19

反応中、refs may not be attached to a stateless component

私の理解では、Reduxのは、あなたがそれをかかわらずそれはステートレスだかどうかのを与える要素にrefを添付反応します。 React Redux 3は、あなたが提供したステートレスコンポーネント(ProjectsSummaryLayout)にrefを添付しているため、Reactの警告が表示されます。

あなたは間違ったことはしていません。this GitHub commentによれば、警告を無視しても問題ありません。

では Reduxの反応し、何refはあなたがReduxの4を反応させるためにアップグレードした場合、警告が離れて行く必要がありますを意味し、デフォルトで包まれたコンポーネントに添付されていません。

+0

react-dndと同じ問題が発生しました。 警告:ステートレス関数のコンポーネントには、refを渡すことはできません。この参照にアクセスしようとすると失敗します。 'DragSource(Component)'のレンダリングメソッドを確認してください。 – Sri

0

リアクションには、よく使われる2つのコンポーネントスタイルがあります。

  • 機能コンポーネント
  • クラスコンポーネント

だから、私はその後、私は、このエラーに遭遇した機能的なものを利用したとき。機能コンポーネント

code for square component

しかし、すぐに、私はクラスのコンポーネントにそれを変更して、それが働いたに対応する error encountered when I was using functional component

コードスニペット。

it worked

コードは、クラスのコンポーネントに対応するスニペット。

enter image description here

クラスコンポーネントへの機能コンポーネントを変更してみてください。 私はあなたの問題を解決することを願っています。

関連する問題