IT•개발 끄적/React

[REACT] 리액트 컴포넌트로 체크박스 선택/해제 구현(used React component in checkbox)

소다맛사탕 2021. 6. 4. 22:19
반응형

안녕하세요. 소다맛사탕 입니다.

 

오늘 포스팅에선 기존 자바스크립트 jQuery를 이용해 구현한 지난 포스팅 '[javascript] 체크박스 전체 선택/해제'를 리액트 컴포넌트를 이용해 체크박스 선택/해제 하는것을 구현 하려고 합니다.

 

※ React Component 란?

특정 기능을 가진 법용적인 '부품'을 나타내는 용어로 개발자가 원하는 형태로 쉽게 UI 부품을 설계할 수 있습니다.

리액트에서 컴포넌트의 사용법은 기본적인 컴포넌트 클래스를 상속받을 수 있게 해주는 React.Component와 컴포넌트를 사용할 때의 태그 요소인 this.prop라는 객체 자료형으로 이루어진 방식입니다.

 

예_)

<script type="text/babel">
	// 클래스로 컴포넌트 정의
    class 클래스명 extents React.Component {
    	메서드() {
        	const a = this.props.text
            return a;
        }
        
        render() {
        	const txtVw = this.메서드()
        	return (
            	<div>
            		<input value={a} />
                </div>
            )
        }
    }
    
    // 컴포넌트 사용
    const dom = <div>
    <클래스명 a="test_a" />
    </div>
    // 리액트로 DOM의 내용 변경
    ReactDOM.render(dom, document.getElementById('html아이디값'))
</script>

리액트로 컴포넌트를 만든 예시를 보여주기 위해 위와 같은 예시를 구현했습니다.

 

그럼 본론으로...

 

리액트 컴포넌트를 이용해 체크박스 선택/해제구현해 보겠습니다.

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://unpkg.com/react@15/dist/react.min.js"></script>
<script src="https://unpkg.com/react-dom@15/dist/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.min.js"></script>
<title>리액트 컴포넌트 체크박스</title>
</head>
<body>
<div id="chkbox_div"></div>
<script type="text/babel">
// 상태를 가진 컴포넌트 정의
class ChkBox extends React.Component {
	// 생성자
	constructor(props) {
		super(props)
		// 초기화
		this.state = {checked: false}
	}

	render() {
		// 체크 해제
		let chk_yn = '○'
		// 체크되어 있는지 확인
		if(this.state.checked) {
			chk_yn = '●'
		}

		// 클릭 이벤트
		const click = (e) => {
			const val = !this.state.checked
			this.setState({checked: val})
		}

		// 렌더링할 내용 반환
		return (
			<div onClick={click}>
			{chk_yn} {this.props.label}
			</div>
		)
	}
}
// 리액트로 DOM 내용 변경
const dom = <div>
	<ChkBox label="일번1" />
	<ChkBox label="이번2" />
	<ChkBox label="삼번3" />
	</div>
ReactDOM.render(dom, document.getElementById('chkbox_div'))
</script>
</body>
</html>

ChkBox 컴포넌트를 정의해서 체크박스를 구현하였습니다.

속성값을 받기위한 constructor()를 정의하고,

super() 메서드를 호출해서 React.Component의 생성자를 실행하고,

state 프로퍼티를 초기화 합니다. ( 체크박스 해제 상태 false )

클릭 이벤트 내부에서 setState() 메서드를 호출해 체크박스의 상태를 변경해 자동으로 화면의 출력상태를 바꿉니다.

 

---- 결과 ----

왼쪽 default 선택 해제 상태

오른쪽 선택한 상태

react component checkbox ex