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 - 메타코딩