2016-12-29 11 views
0

<CardDetails />コンポーネントのうち、親がクリックされたコンポーネントを1つだけ表示するにはどうすればよいですか?コードを実行すると、状態を変更した後、すべてのCardDetailsコンポーネントがレンダリングされます。独自のonclickイベントと各コンポーネントの状態を追加する代わりに、別の方法がありますか?状態を変更した後に1つのコンポーネントだけをレンダリングする方法はありますか?

class Deck extends React.Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
     cardDetails: false 
     }; 
     // This binding is necessary to make `this` work in the callback 
     this.handleClick = this.handleClick.bind(this); 
     this.onClick = this.onClick.bind(this); 
    } 
    onClick() { 
     this.setState({ 
     cardDetails: true, 
     // when cardDetails is set as true, all <CardDetails /> components are rendered 
     }, function() { 
     console.log('cardDetails: ' + this.state.cardDetails + '. This.onclick: ' + this.onClick) 
     }); 
    } 
    render() { 
     return (< div className = "deck-container" > < div className = "chosen-cards" > 
     <CardHistory onClick = { 
       this.onClick 
      } > { 
       this.state.cardDetails ? < CardDetails/> : null 
      } < /CardHistory> 
      < CardHistory onClick = {this.onClick} > { 
       this.state.cardDetails ? < CardDetails/> : null 
      } < /CardHistory> </div > < /div>);}} 
      ReactDOM.render(<Deck> < /Deck>,document.getElementById('root')); 

答えて

0

CardDetailsコンポーネントにshouldComponentUpdateメソッドを追加します。また、状態値をpropsとして送信します。

shouldComponentUpdate(nextProps, nextState) { 
    return (nextprops.cardDetails != this.props.cardDetails); 
} 

これは基本的に、状態が変更されるたびにCardDetailsコンポーネントが再レンダリングされないようにします。

+0

'shouldComponentUpdate'メソッドを' class CardDetails extends React.Component {} 'に追加し、this.state.cardDetailsからthis.props.cardDetailsに変更することができますか?私は反応が新しく、少し遅いです。前もって感謝します。 – zaebalo

+0

親コンポーネントはそのまま使用してください。 を宣言している間にを宣言すると、カード内の詳細コンポーネントにthis.props.cardDetailsにアクセスできるようになります。したがって、親コンポーネントの変更によって、小道具の値が変更され、CardDetailsコンポーネントが再描画されます。カードの詳細コンポーネントでfalseを返すことで、再レンダリングを防ぐことができます。では、いつレンダリングしないかは、props.cardDetailsの値が変更されたときです。 –

+0

ええ、それでもで複数のすべてのコンポーネントをレンダリングします。たぶん私は何か間違ったことをしました – zaebalo

関連する問題