State : 변경가능한 상태. 상위 컴포넌트에서 결정됨. 변경될 때마다 컴포넌트가 갱신됨.
동적으로 변할 수 있는 값.
Toggle Switch 의 on/off 나 Coumter 처럼 컴포넌트 내부에서 변할 수 있는 값
예시 : 장바구니 물품 리스트, 수량, 단일 물품의 포함 여부 체크, 결제할 물품의 수량 및 합계 등.
Props : 상위 컴포넌트에서 전달받은 데이터(객체 형태로 들어옴.)
함부로 변경될 수 없는 읽기 전용(read-only) 객체임.(임의로 데이터를 변경할 수 없게 해서 side effect 방지)
State & Props 적용 예시 : <Child attribute={value} />
function Animal (props) { // Animal 이 Cat 의 하위 컴포넌트가 됨. return ( <h1>Name is {props.name}</h1> {/* 'cat' 출력*/} ) } function Cat() { return( <h1> <Animal name={'cat'} /> //Props 로 { name : 'cat' } 을 전달해줌 </h1> ) }
+ 참고로 <Child>props 로 전달할 내용</Child>
로도 props 를 전달할 수 있으며 props.children
으로 컴포넌트의 여는 태그와 닫는 태그 사이(HTML content 자리)의 내용을 받아 올 수도 있음. 그러나 {key : value}
형태로 props 를 전달하고 객체의 key 값을 불러오는 것처럼 . , [] 로 불러오는 방식이 많이 쓰인다고 함.
import { useState } from "react";
로 불러와주고,const [state 저장 변수, state변수를 변경할 함수] = useState(변수의 초기값);
으로 컴포넌트 안에 새로운 state 변수를 선언해 줌function Check() { const [isChecked, setIsChecked] = useState(false); function handleClick(event){ setIsChecked(event.target.checked) } return ( <> <input type='checkbox' checked={isChecked} onClick={handleClick}></input> <span> {isChecked ? `체크됨(checked === true)` : `체크 해제됨(checked === false)`} </span> </> ) }
=> 추가로 공부할 것!
벨로퍼트 16. useEffect를 사용하여 마운트/언마운트/업데이트시 할 작업 설정하기
useEffect 완벽가이드(번역)
onClick
으로 event 함수 받아오기(onClick 으로 함수를 받아올때에는 함수명()이 아닌 함수명만 받아와야 리턴값이 적용되는 것이 아니라 함수 내용이 실행됨(set 함수는 리턴값이 없어서 undefined가 출력됨))onChange
로 받아옴)event.target.value
는 해당 요소의 value 속성을 가져오는 것임.// function Animal (props) { const [kind, setKind] = useState('unknown') function handleClick(event){ setKind(event.target.value) } return ( <> <h1>Name is {props.name}</h1> <h1>Kind is {kind}</h1> <select onClick={handleClick} {/*onClick={()=>{alert.value}} 와 같이 리턴문 안에서 함수를 정의할 수도 있음*/} <option value="cat">Cat</option> <option value="dog">Dog</option> <option value="bird">Bird</option> </select> </> ) } function Cat() { return( <h1> <Animal name={'cat'} /> </h1> ) }
<React.Fragment>
=== <>
랑 같은 역할을 함(요소들을 최상단에서 묶어주지만 DOM 에는 나타나지 않음)