ReactJS
form 안의 input 값 reset
개념
function Article() {
const [inputValue, setInputValue] = useState();
const [comments, setComments] = useState([]);
const input = useRef();
const handleComments = event => {
setInputValue(event.target.value);
};
const addComment = event => {
event.preventDefault();
setComments([...comments, inputValue]);
input.current.value = '';
};
...
}
form에 reset
<input name=" "> 계산된 속성명
개념
비슷한 state와 이벤트 handler 함수를 반복해야 할 때, 계산된 속성명을 이용하여 합쳐줄 수 있다. name 속성을 사용할 수 있는 <input> 태그에서만 가능하다. id와 password <input> 태그에서 값을 받아와야 할 때가 그런 예이다.
사용법
function Login() {
const [inputValue, setInputValue] = useState({ id: '', password: '' });
const handleInput = event => {
const { name, value } = event.target;
setInputValue({ ...inputValue, [name]: value });
};
return (
<div className="login">
<form className="loginForm">
<input
name="id"
onChange={handleInput}
placeholder="전화번호, 사용자 이름 또는 이메일"
/>
<input
name="password"
onChange={handleInput}
type="password"
placeholder="비밀번호"
/>
</form>
</div>
);
}
- 각각의 <input> 태그에 서로 다른 name 속성을 준다.
- <input>의 값을 받아올 state의 초기값을 객체 형태로 구성한다. name 속성의 값을 key로 하여, 두 <input> 태그의 값을 저장할 수 있게 된다.
- 구조분해 할당하듯이 { }
- setState 함수에서 기존의 state를 ...으로 얕은 복사하고, [name]: value의 프로퍼티를 추가한 객체를 리턴한다.
- 프로퍼티명 자리에서 표현식을 쓰려면 [] 대괄호 안에 쓰면 된다.
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Object_initializer#%EA%B3%84%EC%82%B0%EB%90%9C_%EC%86%8D%EC%84%B1%EB%AA%85
- input
https://hianna.tistory.com/488
function moreThanHalf(nums) {
let majorityNum = "";
for(let i=0; i < nums.length; i++) {
let numsArray = nums.filter(e => nums[i] === e)
if (numsArray.length > nums.length/2) {
majorityNum = nums[i];
return parseInt(majorityNum);
}
}
return majorityNum;
}
'TIL' 카테고리의 다른 글
[TIL-131] 위코드 32일차: React JS - 위스타그램 마무리 / JS 코드카타 (0) | 2022.02.25 |
---|---|
[TIL-130] 위코드 31일차: React JS - 서버와 통신하기 / JS 코드카타 (0) | 2022.02.23 |
[TIL-128] 위코드 29일차: React JS - 댓글 달기 / JS 코드카타 (0) | 2022.02.21 |
[TIL-127] 위코드 27일차: React JS - useRef() 훅스 (0) | 2022.02.19 |
[TIL-126] 위코드 26일차: 코드 카타 (0) | 2022.02.18 |