🚩 해당 글은 유튜브 The Net Ninja와 React 공식문서를
공부한 토대로 작성된 글입니다. 혹시라도 잘못된 글이 있다면
댓글로 알려주세요 🏃♀️🏃♀️ + 해당 글은 배울때마다 추가됩니다.
const [state, setState] = useState(initialState);
setState(newState);
function Counter({initialCount}) {
const [count, setCount] = useState(initialCount);
return (
<>
Count: {count}
<button onClick={() => setCount(initialCount)}>Reset</button>
<button onClick={() => setCount(prevCount => prevCount - 1)}>-</button>
<button onClick={() => setCount(prevCount => prevCount + 1)}>+</button>
</>
);
}
componentDidMount
, componentDidUpdate
, componentWillUpdate
조합의 형태로 기능동작을 한다고 할 수 있다.useEffect(didUpdate);
useEffect(
() => {
const subscription = props.source.subscribe();
return () => {
subscription.unsubscribe();
};
},
[props.source],
);
useEffect(
()=>{
console.log('마운트+btn업데이트 마다 실행~!');
},
[btn]
)
useEffect(
()=>{
console.log('마운트+btn업데이트 마다 실행~!');
return ()=>{
console.log('cleanup 함수 실행!');
}
},[btn])'
useEffect(effect,[])
useEffect(effect)
useEffect(effect, [deps1, deps2, ... ])
여기에서 dependencies란?
it must include all values that are used inside the callback and participate in the React data flow. That includes props, state, and anything derived from them.
import React, { useState, useEffect } from 'react';
function FriendStatus(props) {
const [isOnline, setIsOnline] = useState(null);
useEffect(() => {
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
// Specify how to clean up after this effect:
return function cleanup() {
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
};
});
if (isOnline === null) {
return 'Loading...';
}
return isOnline ? 'Online' : 'Offline';
}
Fetching data in react using hooks
리액트 공식문서 - Using the effect hook
useContext
를 통해 한번에 전달할 수 있음.const themes = {
light: {
foreground: "#000000",
background: "#eeeeee"
},
dark: {
foreground: "#ffffff",
background: "#222222"
}
};
// 1️⃣ 부모에서 받을 prop을 React.createContext()에 담는다.
// createContext() 함수는 Provider와 Consumer를 반환한다.
const ThemeContext = React.createContext(themes.light);
function App() {
return (
// 2️⃣ 사용할 부분을 <이름.Provider>로 묶는다.
// value값을 하위 컴포넌트에 전달하게 된다.
<ThemeContext.Provider value={themes.dark}>
<Toolbar />
</ThemeContext.Provider>
);
}
function Toolbar(props) {
return (
<div>
<ThemedButton />
</div>
);
}
function ThemedButton() {
// 3️⃣ 기본문법 const value = useContext(받아올컨텍스트변수)
const theme = useContext(ThemeContext);
return (
<button style={{ background: theme.background, color: theme.foreground }}> // 4️⃣ 받아온 background, foreground 사용할 수 있음.
I am styled by theme context!
</button>
);
}
👉 사용별로 사용하게 될 때 공부 후 입력 예정 😉