다음 코드를 사용하여 구성 요소를 작성했습니다. 목표는 카드에 버튼을 클릭했을 때 그것을 강조 표시하기 위해 카드에 수업을 추가하는 것입니다. 그러나 아래 코드는 첫 번째 클릭에서 작동하지만 후속 클릭에서는 작동하지 않습니다. 클래스를 제거 할 때 다른 요소의 클릭 상태를 false로 설정해야한다는 것을 이해했습니다. 어떻게 할 수 있습니까?React js : 다른 구성 요소의 상태 액세스
import React, { Component } from 'react';
import './PricingCard.css';
class PricingCard extends Component {
constructor(){
super();
this.state = {
clicked : false
}
}
makeSelection(){
let elems = document.getElementsByClassName('Card');
for(var i=0;i<elems.length;i++){
elems[i].classList.remove("active");
}
this.setState({clicked: true});
}
render() {
var activeClass = this.state.clicked ? 'active' : '';
return (
<div className= {"categoryItem Card " + this.props.planName + " " +activeClass}>
<div className="cardDetails">
<div> {this.props.planName} </div>
<div className="pricing"> {this.props.price} </div>
<button onClick={this.makeSelection.bind(this)} className="buttonPrimary"> Select this plan </button>
<div className="subtitle"> {this.props.footerText} </div>
</div>
</div>
);
}
}
export default PricingCard;
"목표는 카드의 버튼을 클릭하면 강조 표시하는 카드에 클래스를 추가하는 것입니다. 그러나 아래 코드는 첫 번째 클릭에서 작동하지만 후속 클릭에서는 작동하지 않습니다." 다음 클릭시에 당신이 원하는 일은 무엇입니까? 수업을 토글 하시겠습니까? – Tomasz
@ Tomasz 요소를 클릭하면 해당 요소에 클래스가 추가되고 같은 클래스가 다른 모든 유사한 요소에서 제거됩니다. 일반 요소 선택 UI. –