리액트 코드에서 문제가 발생했습니다.

조회수 434회

APP.JS

import React, {Component} from 'react';
import INPUT from './INPUT'

class App extends Component{

    constructor(props){
        super(props)
        this.state={
            mode:'record'
        }
    }

    changeMode(){
        var article = null
        if(this.state.mode==='input'){
            article = <h1>TEST</h1>
        }else if(this.state.mode==='record'){
            article = <h1>TEST_</h1>
        }
        return article
    }

    render(){
        return(
            <div>
                {this.changeMode()}
            </div>
        )
    }
}

export default App;

INPUT.JS

import React, {Component} from 'react'
import axios from 'axios'

class INPUT extends Component{
    render(){
        return(
            <div>

                <select id='sel'> </select>

                <br></br>

                <input type='text' id='input'></input>

                <input type='button' value='입력'onClick={
                    ()=>{
                        input()
                    }
                }>
                </input>

            </div>
        )
    }
}
axios.get('/input').then((res)=>{
    var sel = document.getElementById('sel');
    for(var i in res.data.results){
        var opt = new Option(res.data.results[i].name, res.data.results[i].name);
        sel.options.add(opt);
    }
})
var input = function(){
    var input = document.getElementById('input').value
    var sel = document.getElementById('sel').value
    axios.post('/input', {input:input, name:sel})
    document.getElementById('input').value=''
}
export default INPUT

서버측 app.js

app.get('/input', function(req,res){
    var sql = 'select distinct name from ex'
    conn.query(sql, function(err, results){
    })
})

app.post('/input', function(req,res){
    var sql = 'insert into record(name) values(?)'
    conn.query(sql, arr, function(err, results){
    })
})

셀렉트 상자에 특정 값을 입력하는 INPUT컴퍼넌트를 import 하였습니다. INPUT 컴퍼넌트를 사용하지 않았는데도, 계속 셀렉트 상자가 없다고 INPUT컴퍼넌트에서 오류가 발생합니다. 왜이러는 걸까요? 추신: 이것 저것 확인해보다가 알아냈는데, 서버를 끄면 정상적으로 작동을 합니다.

  • axios.get()을 호출하는 시점을 다시 잡으셔야 할 듯 합니다. react의 life cycle 중 componentDidMount 를 사용해 보세요. doodoji 2020.4.9 14:18
  • 감사합니다. 덕분에 해결했습니다. 라이프사이클 API 공부를 해야겠습니다. 조영민 2020.4.11 07:54

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)