2017-10-19 28 views
0
import React, { Component } from 'react'; 

class newsList extends React.Component { 

    render(){ 

     return(
      <div> 
       {JSON.stringify(this.props.arr)} 
      </div> 
     ) 
    } 

} 

export default newsList; 

上記のコードでは、arrは別のコンポーネントからのオブジェクトです。 JSON.stringify(this.props.arr.result)を使用してデータを表示することができます。しかし、私がJSON.stringify(this.props.arr.result.id)でそれを変更するとすぐに、私はTypeError: this.props.arr.result is undefinedと言うエラーが出ています。私はここで間違っていることを理解できませんか?どのように反応コンポーネントの小道具にアクセスするには?

+0

あなたは 'props'がどのように見えるかのサンプルを提供することができすべきですか? –

+0

あなたの 'arr'オブジェクトに問題があるので、データを表示する方が良いです。 – wakwak

+0

あなたのコードのある時点で、 'this.props.arr'は' undefined'です。 – Andrew

答えて

0

this.props.arr配列であるでしょうか? もしそうであれば、レンダリング機能は

render(){ 
    var ids = this.props.arr.map(e=>(<div>e.result.id</div>)) 
    return(
     <div> 
      {ids} 
     </div> 
    ) 
} 
+0

はい。これはオブジェクトの配列です。 – Parth

+0

@Parthそれはうまくいくと思います – RalfZ

0

は、代わりにこのコードを試してみてください:

class NewsList extends React.Component { 
    constructor(props) { 
     super(props); 
     this.props = props; 
    } 
    render() { 
     return <div>{this.props.arr}</div>; 
    } 
} 

それは最初のパラメータだとしてA React.Componentconstructorは常にpropsを受け取ります。

+0

'super(props)'を使うのが最も普及しています。それにかかわらず、これは問題ではないでしょう。あなたは明示的に 'コンストラクタ 'を書かなくても、Reactコンポーネントの中で小道具を受け入れることができます – Andrew

+0

' this.props = props'を使用するとエラーが発生します。エラーは 'これはsuper()の前には許されません。 – Parth

+0

ああ、そうです。コードを上記の編集に変更します。 –

1

ある時点では、this.props.arrundefinedであるが、最終的に値が割り当てられることはほぼ肯定的です。最初のレンダリングにはnullまたはundefinedが返されますが、存在しないキーにもう1歩進んだ場合は、そのエラーがスローされます。ブール値を使って、最初にレンダリングされるものを制御することができます。代わりに、このコード行の

{this.props.arr ? JSON.stringify(this.props.arr) : null} 

編集:あなたの問題はthis.props.arr.result.idである

{JSON.stringify(this.props.arr)} 

はこれをみては?もしそうなら、この代わりに

{this.props.arr.result ? JSON.stringify(this.props.arr.result.id) : null} 
+0

それは働いています。 @Andrewさん、ありがとうございました。 – Parth

+0

@Parth常に喜んで助けてください。あなたが気にしないなら、これが正解であることをマークしてください:) – Andrew

関連する問題