
조건부로 비활성화된 React 체크박스
React에서는 특정 조건에 따라 체크박스를 조건부로 비활성화해야 할 때가 있습니다. 일반적인 요구 사항 중 하나는 사용자가 나머지를 비활성화하기 전에 선택할 수 있는 체크박스 수를 제한하는 것입니다. 이 블로그 포스트에서는 React 애플리케이션에서 이 기능을 구현하는 방법을 살펴보겠습니다.
체크박스 선택 추적하기
체크박스를 조건부로 비활성화하기 위해선 선택된 체크박스를 추적해야 합니다. 이를 위해 컴포넌트의 상태에 체크 상태를 저장하는 객체를 유지하는 방법을 사용할 수 있습니다. 예제를 살펴봅시다:
class CheckboxList extends React.Component {
state = {
checkboxes: {},
};
handleCheckboxChange = (event) => {
const { name, checked } = event.target;
this.setState((prevState) => ({
checkboxes: {
...prevState.checkboxes,
[name]: checked,
},
}));
};
render() {
const { checkboxes } = this.state;
const selectedCount = Object.values(checkboxes).filter((checked) => checked).length;
const disableRemaining = selectedCount >= 2;
return (
<div>
{checkboxList.map((checkbox, index) => (
<div key={index}>
<input
type="checkbox"
name={checkbox}
checked={checkboxes[checkbox] || false}
disabled={!checkboxes[checkbox] && disableRemaining}
onChange={this.handleCheckboxChange}
/>
<label>{checkbox}</label>
</div>
))}
</div>
);
}
}
위 예제에서는 checkboxes 상태를 빈 객체로 초기화합니다. handleCheckboxChange 함수는 체크박스를 선택하거나 선택 해제할 때마다 checkboxes 상태를 업데이트합니다. Object.values와 filter 함수를 사용하여 현재 선택된 체크박스 수를 계산합니다. selectedCount를 기반으로 disableRemaining 변수를 사용하여 나머지 체크박스를 비활성화할지 여부를 결정합니다.
조건부 비활성화 구현하기
체크박스의 비활성화 속성은 disabled 속성을 설정하여 구현됩니다. 예제에서는 최대 선택 제한에 도달한 후 체크박스를 조건부로 비활성화하기 위해 disabled 속성과 disableRemaining 변수를 함께 사용합니다. 또한 개별 체크박스의 체크 상태를 확인하여 이미 선택된 체크박스를 비활성화하지 않도록 합니다.
<input
type="checkbox"
name={checkbox}
checked={checkboxes[checkbox] || false}
disabled={!checkboxes[checkbox] && disableRemaining}
onChange={this.handleCheckboxChange}
/>
checkboxList 변수를 사용하여 체크박스 옵션의 배열을 수정하는 것을 잊지 마세요. 배열을 매핑하여 특정 요구 사항에 따라 동적으로 체크박스를 렌더링할 수 있습니다.
결론
이 블로그 포스트에서는 React 애플리케이션에서 조건부로 체크박스를 비활성화하는 방법을 살펴보았습니다. 체크박스 선택 사항을 추적함으로써 최대 선택 제한에 도달했을 때 추가 체크박스를 비활성화할 수 있게 되었습니다. 이 접근 방식을 통해 사용자에게 더 직관적이고 사용자 친화적인 경험을 제공할 수 있습니다. 이 튜토리얼이 여러분의 프로젝트에서 이 기능을 구현하는 데 도움이 되기를 바랍니다.
좋은 코딩 되세요!