2017-08-09 22 views
0

私はdoorsItemコンポーネントの私の小道具アイテムにどうやってアクセスできるのだろう?私DoorsItemコンポーネントが前にこのように見えたconst doors = this.props.doors.data.map(item => <DoorsItem item={item} />)親コンポーネントから子にデータを渡す| React、Redux

class DoorsItem extends Component { 
    render() { 
    return (
     <Grid> 
     <Row> 
      <Col style={{ width: '100%' }}> 
      <ul className="door-list"> 
       <li className="door-flex-container"> 
       <div className="door-flex-item-1"> 
        <h4 className="title-text-container"> 
        {/* How can I use it here? */} 
        </h4> 
       </div> 

const DoorsItem = ({ item, customer }) => 
    <Grid> 
    <Row key={item._id}> 
     <Col style={{ width: '100%' }}> 
     <ul className="door-list"> 
      <li className="door-flex-container"> 
      <div className="door-flex-item-1"> 
       <h4 className="title-text-container"> 
       {item.address.street} // Can use 'item' here 

しかし、私はReduxのでそれを接続したかったので、私はこれで終わった親の私のコードはこれです

新しいコード化されたコンポーネントのitem小道具にアクセスするには、どうすればよいのでしょうか?

読んでいただきありがとうございました、ありがとうございました。あなたが<DoorsItem item={item} />をやっているとき

+1

クラスベースのコンポーネントにする必要はありません。機能部品も接続することができます。とにかく 'this.props; 'を使って小道具にアクセスできます。あなたのreturnステートメントの前に 'const {item、customer} = this.props'という行を挿入すれば、それをあなたの機能コンポーネントに相当するものにアクセスすることができます。 – trixn

+0

したがって、それを元に戻すと、reduxをconnectで追加することは問題にはなりませんか? –

+1

はいできます。コンポーネントが状態関数またはライフサイクル関数を使用しない限り、それをクラスにする必要はありません。 'connect()'関数は、それがクラスか関数かは気にしません。 – trixn

答えて

0

、あなたは、このコンポーネント内であなたがthis.props.itemまたはconst { item } = this.props;より良いようにそれを使用し、後でitemローカル変数を使用することができることを意味しitem小道具を、代入しています。ですから、例えば:the official documentationにそのことについて

const { item } = this.props; return <span>this is the {item} you're looking for</span>

詳しい情報。

通常、クラスベースのコンポーネントを使用する場合、propTypesdefaultPropsを定義する必要があります。これにより、クラスベースのコンポーネントのpropsをよりよく理解することができ、propsを挿入するための検証が提供されます。詳細情報here(警告:React v15.5から別のパッケージに移動)

最後に、you can use contextが推奨される方法ではありませんが、時には参考になる場合もあります。

+0

機能コンポーネントのコンテキストにもアクセスできます。これは、小道具の後の第2パラメータです。将来的にはapiが変わる可能性があるので、reduxやreact-routerのようなライブラリを除いては使用することをお勧めします。また、機能コンポーネントに対してもPropTypesを定義することができます。 – trixn

+0

これは本当に役に立ちます@trixn個人的には、クラスベースのコンポーネントは整理が簡単で、 'this'キーワードのスコープが明確であるため – Fotis

関連する問題