function App() {
let number = 1;
const add = () => {
number++;
console.log("add", number);
}
return (<div>
<h1>숫자 : {number}</h1>
<button>더하기</button>
</div>)
}
function App() {
let number = 1;
const add = () => {
number++;
console.log("add", number);
}
return (<div>
<h1>숫자 : {number}</h1>
<button onClick={add}>더하기</button>
</div>)
}
number
가 만약에 상태 변수라면 어떨까?function App() {
const [number, setNumber] = useState(1);
// React 안에 있는 hooks 라이브러리
const add = () => {
number++;
console.log("add", number);
}
return (<div>
<h1>숫자 : {number}</h1>
<button onClick={add}>더하기</button>
</div>)
}
setNumber
를 통해 상태값을 변경해야 한다.function App() {
const [number, setNumber] = useState(1);
// React 안에 있는 hooks 라이브러리
const add = () => {
setNumber(number + 1);
console.log("add", number);
}
return (<div>
<h1>숫자 : {number}</h1>
<button onClick={add}>더하기</button>
</div>)
}
number
값을 바꾸는 게 아니라 React한테 값을 변경하라고 시키는 것이다.number++
를 하는 것은 의미가 없다. const는 변경할 수 없으니까.add
를 통해 상태값이 변경되고 re-rendering
을 하게 되면서 return값은 모두 새로 그려진다.const Sub = () => {
return <div>
<h1>Sub입니다.</h1>
</div>;
}
function App() {
const [number, setNumber] = useState(1);
// React 안에 있는 hooks 라이브러리
const add = () => {
setNumber(number + 1);
console.log("add", number);
}
return (<div>
<h1>숫자 : {number}</h1>
<button onClick={add}>더하기</button>
<Sub />
</div>)
}
function App() {
const [users, setUsers] = useState([]);
// React 안에 있는 hooks 라이브러리
// 다운로드를 받았다고 하자.
const download = () => {
let sample = [
{
id: 1, name: "홍길동",
},
{
id: 2, name: "임꺽정",
},
{
id: 3, name: "매즈 미켈슨",
},
{
id: 4, name: "세종대왕",
},
];
setUsers([...users, ...sample]);
}
return (<div>
<button onClick={download}>다운로드</button>
</div>)
}
setUsers([...sample]);
const [users, setUsers] = useState([{id: 5, name: "하늘"}]);
setUsers([...users, ...sample]);
function App() {
const [users, setUsers] = useState([]);
// React 안에 있는 hooks 라이브러리
// 다운로드를 받았다고 하자.
const download = () => {
let sample = [
{
id: 1, name: "홍길동",
},
{
id: 2, name: "임꺽정",
},
{
id: 3, name: "매즈 미켈슨",
},
{
id: 4, name: "세종대왕",
},
];
setUsers([sample]);
}
return (<div>
<button onClick={download}>다운로드</button>
{users.map(u => <h1>{u.id}, {u.name}</h1>)}
</div>)
}
function App() {
console.log('APP 실행됨');
const [users, setUsers] = useState([ {
id: 1, name: "홍길동",
},
{
id: 2, name: "임꺽정",
},
{
id: 3, name: "매즈 미켈슨",
},
{
id: 4, name: "세종대왕",
},]);
// React 안에 있는 hooks 라이브러리
// 다운로드를 받았다고 하자.
const download = () => {
let sample = [
{
id: 1, name: "홍길동",
},
{
id: 2, name: "임꺽정",
},
{
id: 3, name: "매즈 미켈슨",
},
{
id: 4, name: "세종대왕",
},
];
setUsers([sample]);
}
return (<div>
<button onClick={download}>다운로드</button>
{users.map((u) => <h1>{u.id}, {u.name}</h1>)}
</div>)
}
function App() {
let sample = [
{
id: 1, name: "홍길동",
},
{
id: 2, name: "임꺽정",
},
{
id: 3, name: "매즈 미켈슨",
},
{
id: 4, name: "세종대왕",
},
];
console.log('APP 실행됨');
const [users, setUsers] = useState(sample);
// React 안에 있는 hooks 라이브러리
// 다운로드를 받았다고 하자.
const download = () => {
setUsers(sample);
}
return (<div>
<button onClick={download}>다운로드</button>
{users.map((u) => <h1>{u.id}, {u.name}</h1>)}
</div>)
}
function App() {
let sample = [
{
id: 1, name: "홍길동",
},
{
id: 2, name: "임꺽정",
},
{
id: 3, name: "매즈 미켈슨",
},
{
id: 4, name: "세종대왕",
},
];
console.log('APP 실행됨');
const [users, setUsers] = useState(sample);
// React 안에 있는 hooks 라이브러리
// 다운로드를 받았다고 하자.
const download = () => {
sample.push({
id: 5, name: "까마귀",
},); // 기존 데이터를 변경함
console.log(sample); // 데이터가 변경되었는 지 확인
setUsers(sample);
console.log(sample);
}
return (<div>
<button onClick={download}>다운로드</button>
{users.map((u) => <h1>{u.id}, {u.name}</h1>)}
</div>)
}
function App() {
let sample = [
{
id: 1, name: "홍길동",
},
{
id: 2, name: "임꺽정",
},
{
id: 3, name: "매즈 미켈슨",
},
{
id: 4, name: "세종대왕",
},
];
console.log('APP 실행됨');
const [users, setUsers] = useState(sample);
// React 안에 있는 hooks 라이브러리
// 다운로드를 받았다고 하자.
const download = () => {
const a = sample.concat({
id: 5, name: "까마귀",
},); // 기존 데이터를 변경함
setUsers(a);
}
return (<div>
<button onClick={download}>다운로드</button>
{users.map((u) => <h1>{u.id}, {u.name}</h1>)}
</div>)
}
setUsers([...sample, {
id: 5, name: "까마귀",
}]);
React 오프라인 6강 - useState - 메타코딩