{ }
사용{ }
안에 객체로 넣어야 함 <div
style={{
height: '100vh',
}}
>
</div>
const App = () => {
const divStyle = {
color: "red"
}
return <div style={divStyle}></div>;
};
function User(props) {
return <div>{props.children}</div>;
}
function App() {
return <User>안녕하세요</User>;
}
const [value, setValue] = useState('')
useState()
훅을 사용 setValue()
를 사용불변성 : 메모리에 있는 값을 변경할 수 없는 것
왜 리액트에서는 원시데이터가 아닌 데이터의 불변성을 지켜주는 것을 중요시할까?
💡 리액트는 state의 변화에 따라 리렌더링을 하는데,
state의 변화를 확인하는 기준은 메모리 주소
의 비교!
직접 수정을 가하면 값은 바뀌지만 메모리주소는 변함이 없기 때문에 리렌더링이 일어나지 않음
(= 바뀐 값이 화면에 반영되지 않음)
리액트 불변성 지키기 예시
import React, { useState } from "react";
function App() {
const [dogs, setDogs] = useState(["말티즈"]);
function onClickHandler() {
// spread operator(전개 연산자)를 이용해서 dogs를 복사합니다.
// 그리고 나서 항목을 추가합니다.
setDogs([...dogs, "시고르자브르종"]);
}
console.log(dogs);
return (
<div>
<button onClick={onClickHandler}>버튼</button>
</div>
);
}
export default App;
// 매개변수를 복사한 값을 변경하는 순수함수
const addSixPure = (arr) => {
// 펼침 연산자로 새로운 배열에 6 추가
newArr = [...arr, 6];
return newArr;
};
const num_arr = [1, 2, 3, 4, 5];
// 매개변수의 값을 직접 변경하는 불순함수
const addSixImpure = (arr) => {
// 매개변수에 직접 6 추가
arr.push(6);
return arr;
};
.js
파일과 .jsx
파일은 서로 동일하지만 컴포넌트로 쓰일 파일에는 .jsx 확장자
를 붙여주는 것이 협업시에 알아보기 쉬움