const element = (
<h1 className="greeting">
Hello, world!
</h1>
);
const element = React.createElement(
'h1', // component
{className: 'greeting'}, // props
'Hello, world!' // contents
);
<script type="text/barbel">
를 명시해주어야함<React.Fragment></React.Fragment>
를 사용하면 render할 때 불필요한 div가 생기지 않음. <></>
로 대체 가능// Array
var arr1 = [1, 2, 3, 4, 5];
var arr2 = [...arr1, 6, 7, 8, 9];
console.log(arr2); // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
// String
var str1 = 'paper block';
var str2 = [...str1];
console.log(str2); // [ "p", "a", "p", "e", "r", " ", "b", "l", "o", "c", "k" ]
let obj - {name:'Gildong'};
function bindTest(){
console.log(this.name);
}
bindTest.bind(obj); // Gildong
...
const handleClick = () => alert("Pressed!");
const el = (
<button
onClick={handleClick}
onMouseOut={() => alert("bye")} >
Pressed
</button>
);
ReactDOM.render(el, rootEl);
...
DOM : 논리 트리
컴포넌트 : Element의 집합
Element : 요소, 불변객체. ReactDOM.render()을 통해 update
const App = () => {
const [keyword, setKeyword] = React.useState(""); // 상태값을 관리해주는 훅
const [result, setResult] = React.useState("");
const [typing, setTyping] = React.useState(false); //초기값 false
function handleChange() {
setKeyword(event.target.value);
setTyping(true);
}
function handleClick() {
setTyping(false);
setResult(`We find results of ${keyword}`);
}
};
React.useEffect(() => {
console.log("effect");
}, []); // 두번째 값이 []이면 처음 한번만 실행, []안에 값을 주면 해당 인자가 바뀔때마다 실행
destroy
될 때도 코드를 실행할 수 있음
useEffect
는 함수를 받고, 이 함수는dependency
가 변화할 때 호출- 현재는
dependency
가 비어있으니 컴포넌트가 처음 생성될 때 함수가 호출된 후 다시
호출 되지 않음- 컴포넌트가 파괴될 때도 함수를 실행하고 싶으면
useEffect
함수가 새로운 함수를return
함
-> 왜냐면deps
가 비어있으면 자동으로 컴포넌트가 파괴될 때cleanup
함수가 실행되는데 그 과정이 리렌더링으로useEffect
함수가 실행되고 클린업하면서 이전에 있던 이펙트인 console.log(“created :) )가 삭제되고 새로운 이펙트 함수인 return함수가 실행되기 때문리렌더링 -> 이전 이펙트 클린업 -> 이펙트 실행
(참고 https://simsimjae.tistory.com/401)
- 함수형 컴포넌트가 클래스형 컴포넌트의 기능을 사용할 수 있도록 해주는 기능
- 함수형 컴포넌트에서도 상태 관리를 할 수 있는 useState , 그리고 렌더링 직후 작업을 설정하는 useEffect 등의 기능을 제공
- 최상위 레벨에서만 호출 가능 (반복문, 조건문, 중첩 함수 내부에서 호출 불가)
- 리액트 함수 컴포넌트 내에서만 호출 가능
- useState(), useEffect(), useContext(), useReducer(), useCallback(), useMemo(), useRef() ...
function useLocalStorage(itemName, value = "") {
const [state, setState] = React.useState(() => {
return window.localStorage.getItem(itemName) || value;
});
React.useEffect(() => {
window.localStorage.setItem(itemName, state);
}, [state]);
return [state, setState];
}
const a = () => <div>Hi</div>; // return을 쓰지 않아도됨
const b = () => { return <div>Hi</div> } // return을 명시적으로 사용해야함
React강의로 넘어오고 나서 내용이 머리에 들어오지 않는다......🫥
내용도 어려운거 같은데 강의도 귀에 안들어와....