const Welcome = (props) {
return <h1> {props.name} </h1>
}
Props는 Properties의 줄임말로, 컴포넌트에 원하는 값을 넘겨줄 때 사용한다.
변수, 함수, 객체, 배열 등 JavaScript 요소라면 제한 없이 받을 수 있다.
주로 컴포넌트의 재사용을 위해 사용된다.
const Welcome = (props) {
props.name = "GURI";
return <h1> {props.name} </h1>
}
위 코드처럼 props.name을 "GURI"로 바꾸는 행위는 불가능하다.
Props는 읽기 전용이기 때문!
만약 값을 변경해서 사용하고 싶다면?
const Welcome = (props) {
const username = props.name + "님";
return <h1> {username} </h1>
}
새로운 변수를 생성하고 그 변수에 변형해서 넣고 사용!
props 그 자체를 변경할 수는 없다.
//setState 내에 변경할 값 넣기
const [username, setUserName] = useState("guri"); //초기값 : guri
setUserName("sh");
//setState에 함수를 넣기
const [cnt, setCnt] = useState(0);
setCnt((current) => {
return current + 5
})
위 코드처럼, setState에 직접 값을 넣어 변경할 수도 있고, 함수를 넣어서 변경할 수도 있다.
함수를 넣는 경우에는 함수가 return하는 값으로 state가 변경된다.
현재 값을 기반으로 State를 변경하고자 하는 경우에는 함수를 사용하는 방법을 권장한다.
// 잘못된 예시
const [username, setUserName] =
useState({name="guri", grade:10})
setUser((current) => {
current.grade = 15
return current;
})
// 잘한 예시
const [username, setUserName] =
useState({name="guri", grade:10})
setUser((current) => {
const newUserName = {...current} //복제
newUserName.grade = 15
return newUserName;
})
웹 브라우저가 알려주는 HTML 요소에 대한 사건의 발생을 의미한다.
ex) element가 로딩되었을 때, 클릭했을 때, 마우스를 올렸을 때 등등 다양한 이벤트가 존재한다.
const App = () =>{
const handleClick = () => {
alert('클릭클릭');
}
return (
<div>
<button onClick={handleClick}>클릭</button>
</div>
)
}
const App = () =>{
return (
<div>
<button onClick={()=>{alert("클릭클릭")}}>클릭</button>
</div>
)
}
많이 쓰이는 DOM 이벤트
onClick, onChange, onKeyDown, onKeyUp, onKeyPress, onDoubleClick, onFocus, onBlur, onSubmit
DOM Input 값을 State에 저장하기
const App = () => {
const [inputValue, setInputValue] = useState("value");
const handleChange = (event) => {
setInputValue(event.target.value);
}
return (
<div>
<input onChange={handleChange} defaultValue={inputValue} />
</div>
)
}
▶ event object의 target은 이벤트의 원인이 되는 Element를 가리킨다.
현재 event의 target은 input element이므로 입력된 value를 가져와 setInputValue를 통해 inputValue의 값을 변경해준다.
컴포넌트에서 데이터를 관리(State)하고 데이터가 변경될 때 상호작용(Effect)을 하기 위해 사용
Hook은 React 함수(컴포넌트, Hook) 내에서만 사용 가능
Hook의 이름은 반드시 use로 시작해야함
최상위 Level에서만 Hook을 호출 가능 - if,for문 내부에서 또는 콜백함수로 호출 X
알아 볼 Hook
State Hook, Effect Hook
const [state이름, setState이름] = useState(초기값)
const App = () => {
const [name, setName] = useState('');
//변경할 값을 직접 입력
setName("Guri")
// 또는 현재 값을 매개변수로 받는 함수 선언
setName((current) => {
return current + "님";
})
}
useEffect(EffectCallback, Deps?)
// count 가 증가할 때마다 콘솔에 출력해주는 예시
const App = () => {
const [count, setCount] = useState(0);
useEffect(() => {
console.log(count);
}, [count]);
return <button onClick={() => {
setCount(current => {
return current + 1;
});
}}>
카운트 증가
</button>
}
어떤 effect를 발생하는 함수를 인자로 받는다.