728x90
300x250
SMALL
리액트에서 다중 선택이 가능한 <select> 요소는 multiple 속성을 사용하여 구현한다.
기본적인 다중선택 select 구현
import React, { useState } from "react";
function MultiSelectExample() {
const [selectedOptions, setSelectedOptions] = useState([]);
const handleChange = (event) => {
const options = event.target.options;
const selectedValues = [];
for (let i = 0; i < options.length; i++) {
if (options[i].selected) {
selectedValues.push(options[i].value);
}
}
setSelectedOptions(selectedValues); // 선택된 값을 상태로 업데이트
};
return (
<div>
<h3>다중 선택 셀렉트 박스</h3>
<select multiple={true} value={selectedOptions} onChange={handleChange}>
<option value="apple">사과</option>
<option value="banana">바나나</option>
<option value="cherry">체리</option>
<option value="date">대추야자</option>
<option value="elderberry">엘더베리</option>
</select>
<p>선택된 과일: {selectedOptions.join(", ")}</p>
</div>
);
}
export default MultiSelectExample;
옵션 리스트가 동적으로 변경되어야 할 경우, 배열 데이터를 기반으로 <option>을 렌더링할 수 있다.
옵션을 동적으로 적용하는 다중선택
import React, { useState } from "react";
function DynamicMultiSelect() {
const [selectedOptions, setSelectedOptions] = useState([]);
const fruits = ["사과", "바나나", "체리", "대추야자", "엘더베리"];
const handleChange = (event) => {
const options = event.target.options;
const selectedValues = [];
for (let i = 0; i < options.length; i++) {
if (options[i].selected) {
selectedValues.push(options[i].value);
}
}
setSelectedOptions(selectedValues);
};
return (
<div>
<h3>동적 다중 선택</h3>
<select multiple={true} value={selectedOptions} onChange={handleChange}>
{fruits.map((fruit, index) => (
<option key={index} value={fruit}>
{fruit}
</option>
))}
</select>
<p>선택된 과일: {selectedOptions.join(", ")}</p>
</div>
);
}
export default DynamicMultiSelect;
코드분석
1. useState를 사용한 상태 관리
- useState([])로 selectedOptions라는 상태를 초기화한다. 이 상태는 사용자가 선택한 과일들을 배열 형태로 저장한다.
- setSelectedOptions는 이 상태를 업데이트할 수 있는 함수이다.
2. 동적 과일 목록
- fruits 배열에 선택할 수 있는 과일 목록이 있다.
3. handleChange 함수
const handleChange = (event) => {
const options = event.target.options;
const selectedValues = [];
for (let i = 0; i < options.length; i++) {
if (options[i].selected) {
selectedValues.push(options[i].value);
}
}
setSelectedOptions(selectedValues);
};
- handleChange 함수는 <select> 요소의 onChange 이벤트 핸들러이다. 사용자가 선택을 변경할 때마다 호출된다.
- event.target.options를 통해 <select>요소에 포함된 모든 <option> 요소를 가져온다.
- option[i].selected를 사용해 각 옵션이 선택된 상태인지 확인하고, 선택된 값들을 selectedValues 배열에 추가한다.
- 마지막으로 setSelectedOptions(selectedValues)를 호출해 selectedOptions 상태를 업데이트 한다.
4. select 요소
<select multiple={true} value={selectedOptions} onChange={handleChange}>
{fruits.map((fruit, index) => (
<option key={index} value={fruit}>
{fruit}
</option>
))}
</select>
- <select> 요소는 multiple={true} 속성을 사용하여 다중 선택이 가능하게 설정된다.
- value={selectedOptions}로 선택된 값들을 상태인 selectedOptions에 바인딩한다. 이로 인해 상태가 변경될 때마다 선택한 항목이 자동으로 업데이트된다.
- onChange={handleChange}로 사용자가 선택을 변경할 때마다 handleChange 함수가 호출된다.
- fruits.map()을 사용하여 fruits 배열의 각 항목을 <option>으로 렌더링한다. 각 option은 key={index}와 value={fruit}를 설정하여 고유한 값을 갖게 된다.
5. 선택된 과일 표시
<p>선택된 과일: {selectedOptions.join(", ")}</p>
- selectedOptions.join(",")를 사용하여 선택된 과일들을 문자열로 합친다. 각 과일은 쉼표로 구분된다.
- 이 값을 <p>태그 내에표시하여 사용자가 선택한 과일 목록을 화면에 출력한다.
728x90
반응형
LIST
'Front-end > React' 카테고리의 다른 글
파일 업로드와 미리보기 : React 이미지 파일 처리하기 (0) | 2025.01.23 |
---|---|
React에서 파일 업로드 기능 구현 : 다중 파일 선택과 출력 (0) | 2025.01.22 |
React 드롭다운 메뉴 구현 : 선택된 값 표시하기 (0) | 2025.01.21 |
React로 체크박스 상태에 따라 화면 출력하기 (0) | 2025.01.20 |
리액트에서 텍스트 입력 값 동적으로 업데이트하는 방법 (0) | 2025.01.19 |
댓글