import React from "react";
function Child(props) {
return <div>{props.motherName}</div>;
}
function Mother() {
const name = "홍부인";
return <Child motherName={name} />;
}
function GrandFather() {
return <Mother />;
}
function App() {
return <GrandFather />;
}
export default App;
[과정]
1) motherName이라는 이름으로 name 값을 Child 컴포넌트에게 전달함
2) Child 컴포넌트에서는 props로 Mother컴포넌트에서 보내준 값을 받아와서, 전달받은 값을 화면에 렌더링함
3) 결과적으로 화면에 '홍부인'이 출력됨
// src/App.js
import React from "react";
function User(props) {
return <div>{props.children}</div>;
}
function App() {
return <User>안녕하세요</User>;
}
export default App;
☞ 정상적으로 안녕하세요가 출력됨
// src/About.js
import React from "react";
import Layout from "Layout";
function App() {
return (
<Layout>
<div>여긴 App의 컨텐츠가 들어갑니다.</div>
</Layout>
);
}
export default App;
State가 바뀌면 렌더링이 된다 (세트로 기억하기)
onClick={() => { props.setName("박할아버지"); }}
import React, { useState } from "react";
const App = () => {
const [value, setValue] = useState("");
const onChangeHandler = (event) => {
const inputValue = event.target.value;
setValue(inputValue);
};
console.log(value)
return (
<div>
<input type="text" onChange={onChangeHandler} value={value} />
</div>
);
};
export default App;
import React, { useState } from "react";
function Child(props) {
return (
<div>
<button
onClick={() => {
props.setName("박할아버지");
}}
>
할아버지 이름 바꾸기
</button>
<div>{props.grandFatherName}</div>
</div>
);
}
function Mother(props) {
return (
<Child grandFatherName={props.grandFatherName} setName={props.setName} />
);
}
function GrandFather() {
const [name, setName] = useState("김할아버지");
return <Mother grandFatherName={name} setName={setName} />;
}
function App() {
const [value, setValue] = useState("");
const onChangeHandler = (event) => {
const inputValue = event.target.value;
setValue(inputValue);
};
return (
<div>
<input type="text" onChange={onChangeHandler} value={value} />
<p>Input 값: {value}</p>
<GrandFather />
</div>
);
}
export default App;
-객체나 배열을 수정하면 기존 메모리의 값이 직접 변경되므로 주의가 필요함
리액트에서는 불변성을 중요시하는데, 상태(state)의 변화를 감지하여 리렌더링 여부를 결정하기 때문임
불변성을 지키지 않으면 값은 변경되었지만 메모리 주소는 변하지 않아 리액트가 상태 변화를 감지하지 못하기도 함
배열을 업데이트할 때 전개 연산자를 사용하여 기존 값을 복사하고, 그 후에 값을 수정하여 불변성을 유지함
쉽게 말해서 새롭게 배열을 만들어서 사용하면 됨
내일배움캠프에는 3가지 수준별 반이 있다.
챌린지반(심화), 스탠다드반(기본), 베이직(기초)반이 있다.
심화반은 아직 이른것 같아서 스탠다드반으로 하기로 했는데 이것도 조금 빡신것 같지만 열심히 해볼 것이다.
오늘 스탠다드반에서는 아래의 이미지처럼 이런걸 구현하는걸 해보았다.
원본배열에 있는걸 기준으로 각 버튼을 클릭하면 해당하는 자바스크립트가 실행되도록 하는 것이다.
POP까지는 원장튜터님과 함께 했고 그뒤로는 과제로 내주셨다.
일단 기본적으로 POP까지 한 내용을 토대로 만들어봄
내가 만든 건 이것!
좋았던 점은 약간 낯선 자바스크립트를 알게 되어서 좋았다.
some과 every는 아예 처음 접해보는 것이라 조금 시행 착오가 있었다.
무엇보다 기억에 남는건 includes 였는데, 콘솔에는 찍히는데 아무리 해도 화면에 출력되지 않았다.
const handleIncludes = function () {
const includes = array.includes(query);
//console.log(includes);
//문자열 형변환이 필요했음
setResult(String(includes));
};
해결) 그렇다. 콘솔에는 true와 false가 잘되었는데 문자열로 형변환을 해보니 잘 된다.
오늘의 한줄평 : 뿌듯하다. 열심히 하자.