본문 바로가기
패스트캠퍼스/자습

리액트 예습 6~10강

by sunnykim91 2019. 9. 5.

구구단 리액트로 만들기 및 리액트 팁

 

 

직접 만든 함수들은 화살표 함수를 사용해야한다.

render안에서는 함수를 사용해도 상관없다.

 

구구단 만들기

<html>
    <head>
        <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
        <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
        <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
    </head>
    <body>
        <div id="root"></div>  
        <script type="text/babel">
            class GuGuDan extends React.Component {
                constructor(props) {  // react에서 기본적으로 사용하는것
                    super(props);
                    this.state = {
                        first: Math.ceil(Math.random() *9),
                        second: Math.ceil(Math.random() *9),
                        value: '',
                        result: '',
                    };
                }

                onSubmit = (e) => {
                    e.preventDefault();
                    if (parseInt(this.state.value) === this.state.first * this.state.second) {
                        // this.setState({
                        //     result: '정답: ' + this.state.value,
                        //     first: Math.ceil(Math.random() * 9),
                        //     second: Math.ceil(Math.random() * 9),
                        //     value: '',
                        // });

                        // setState는 비동기이다. 
                        // 함수형 setState => 사용하면 이전상태값을 알 수 있어 유용하다. this.state가 안에 들어가면 쓰는걸로 
                        // state가 변경될때 마다 render가 호출된다. 많이 변경 될 수록 안좋다. 느려짐
                        this.setState((prevState) =>{
                            return {
                                result: '정답: ' + prevState.value,
                                first: Math.ceil(Math.random() * 9),
                                second: Math.ceil(Math.random() * 9),
                                value: '',
                            };
                        });
                    } else {
                        this.setState({
                            result: '땡',
                            value: '',
                        });
                    }
                }

                onChange = (e) => {
                    this.setState({value: e.target.value});
                };

                onRefinput = (c) => {
                    this.input = c;
                };

                render() {
                    return (
                        <React.Fragment>
                            <div>{this.state.first} 곱하기 {this.state.second} 는?</div>    
                            <form onSubmit={this.onSubmit}>
                                <input ref={this.onRefInput} type="number" value={this.state.value} onChange={this.onChange} />
                                <button>입력!</button>
                            </form>
                            <div>{this.state.result}</div>
                        </React.Fragment>
                    );
                }
            }
        </script>

        <script type="text/babel">
            ReactDOM.render(<GuGuDan />, document.querySelector('#root'));  //화면에다가 위에서 만든 것을 실제로 반영하겠다. 렌더링 하겠다.
        </script>
    </body>
</html>

 

반응형

'패스트캠퍼스 > 자습' 카테고리의 다른 글

리액트 11~15강 정리  (0) 2019.09.08
poiemaweb 6~7강 정리  (0) 2019.09.07
poiemaweb 4~5강 정리  (0) 2019.09.05
리액트 예습 1~5강  (0) 2019.09.04
poiemaweb복습 1~3강  (0) 2019.09.03