import React from 'react';
import {useState} from 'react';
function InputForm({number=null, name="", age=0, phonenumber=0, department="", addStu=f=>f}) {
const [txtNumber, setNumber] = useState(number);
const [txtName, setName] = useState(name);
const [txtAge, setAge] = useState(age);
const [txtPhonenumber, setPhonenumber] = useState(phonenumber);
const [txtDepartment, setDepartment] = useState(department);
const onSubmit = (event) => {
event.preventDefault();
addStu(txtNumber, txtName, txtAge, txtPhonenumber, txtDepartment);
}
return (
<div>
<form onSubmit={onSubmit}>
<input type="text" placeholder='학번(ex: 20221234)' onChange={(event)=>setAge(event.target.value)}></input>
<input type="text" placeholder='나이' onChange={(event)=>setName(event.target.value)}></input>
<input type="text" placeholder='이름' onChange={(event)=>setNumber(event.target.value)}></input>
<input type="text" placeholder='전화번호(010 뒤 4자리)' onChange={(event)=>setPhonenumber(event.target.value)}></input>
<input type="text" placeholder='학과(ex: 경영학과)' onChange={(event)=>setDepartment(event.target.value)}></input>
<input type="submit" value="추가"></input>
</form>
</div>
);
}
export default InputForm;
여기서 input 보면 plcaeholder가 학번이라고 적혀있는 곳에 setAge가 있고 나이에는 setName, 이름에는 setNumber 라고 되어있거든요.. 이게 setAge에는 나이, setName에는 이름, setNumber에는 학번이라고 적는게 맞는데 그대로 적고 입력하고 함수를 통해서 출력을 하는데.. 이름 적힌 곳에는 학번이 나오고 나이 적힌 곳에는 이름이 나오고 완전 개판이라서 저렇게 바꾼거거든요? 대체 왜 저렇게 되죠? 분명히 setAge라고 되어있는데 왜 저기에 나이를 적으면 학번이 나오고 개판이 되는 건가요? 잘못한게 없는데 대체 나한테 왜 이러는지 ㅠㅠㅠㅠ
코드좀 다듬어서 주라.. - dc App
네? 코드는 그대로 복붙한거에요
onChange 에 할당한 함수보면 학번에는 event 받아서 setAge 함수 호출하는걸로 되어있는데? - dc App
네 추가하면 화면을 새로 랜더링해야해서 state 사용한거에요. 교수님이 저렇게 하시길래 그대로 했어요. 다른 프로젝트에서는 정상적으로 되는데 왜 이건 이런 문제가 생기는지... ㅠㅠㅠ
이름 쪽에도 setNumber 가 아니라 setTxtName 아냐? - dc App
코드 올릴 때는 이미지로 이쁘게 다듬어주는 사이트 있어(carbon) 다음부터 질문 올릴 때 이걸로 편집해서 주면 답변 더 빨리 올라올거야 - dc App
오 카본 감사합니다.
state 로 선언한 변수의 의미와 input에 등록된 이벤트 리스너 함수의 set 함수이름 봐바 - dc App
학번, 나이, 이름이 서로 바뀌어있어 - dc App
아니 학번 나이 이름 그거는 일부러 저렇게 바꾼 거에요 저렇게 해야 정상적으로 위치에 맞게 화면에 출력이 되는데 왜 저렇게 해야 정상적으로 되나 궁금해서 그걸 물어본거에요
그럼 상위컴포넌트에서 props 로 내려주는 addStu 함수 인자에 위치가 틀린것 아님? - dc App
와 대박 당신은 정녕 천재???? 인자 위치도 영향을 끼치는 군요 그냥 받는 기능만 하는줄 알았는데.... 너무 감사합니다 ㅠㅠㅠㅠㅠ
혹시 인자 위치가 영향을 끼치는 거에 대해서 알아보려면 뭐라고 검색해서 찾아봐야 할까요??
addStu 함수에서 인자받는 순서대로 넣어주기만 하면될듯 한 두단계 상위 컴포넌트에서 선언되어있을거같은데 원본 확인 바람 - dc App
네네 위에서 알려주셔서 해봤더니 해결되었습니다 ㅎㅎ
오 굿굿 ㅎㅎ - dc App
생각해보니 너무 간단한건데 빨리 할 생각에 잊었네요 ㅠㅠ 인자를 보내는 위치랑 받는 위치를 똑같이 해주는게 당연한데.. 아무튼 정말 감사합니다!