더북(TheBook)

예제 코드 6.11 DOM 이벤트에 연결하기 위한 라이프사이클 이벤트 사용하기

class Radio extends React.Component {
    constructor(props) {
        super(props)
        this.handleResize = this.handleResize.bind(this)
        let order = props.order
        let i = 1
        this.state = { ---- 스타일을 상태에 저장한다.
            outerStyle: this.getStyle(4, i),
            innerStyle: this.getStyle(1, i),
            selectedStyle: this.getStyle(2, i),
            taggerStyle: {top: order*20, width: 25, height: 25}
        }
    }
    getStyle(i, m) { ---- 함수를 사용하여 변경되는 너비와 승수에 따라 여러 가지 스타일을 생성한다.
        let value = i*m
        return {
            top: value,
            bottom: value,
            left: value,
            right: value,
        }
    }
    componentDidMount() {
        window.addEventListener('resize', this.handleResize) ---- 미지원 window 이벤트 리스너를 등록한다.
    }
    componentWillUnmount() {
        window.removeEventListener('resize', this.handleResize) ---- 미지원 window 이벤트 리스너를 제거한다.
    }
    handleResize(event) { ---- 새로운 창 크기에 따라 라디오 버튼의 크기를 조절하는 함수를 구현한다.
        let w = 1+ Math.round(window.innerWidth / 300)
        this.setState({
            taggerStyle: {top: this.props.order*w*10, width: w*10, height: w*10},
            textStyle: {left: w*13, fontSize: 7*w}
        })
    }
    ...

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.