React의 기본 Hooks를 간단히 정리해본다.
const [state, setState] = useState(initialState);
- params : state의 기본값, 초기값.
- return : [상태 값, 상태 설정 함수] 형태의 배열
setState(newState);
상태 설정 함수 setState 함수는 state를 갱신할 때 사용한다.
새 state값을 받아 컴포넌트 리렌더링을 큐에 등록하고, 다음 리렌더링 시 useState에서 반환 받은 state 상태 값은 갱신된 최신 state 값을 가진다.
하나의 useState는 하나의 state만 관리할 수 있다. 컴포넌트에서 관리할 상태가 여러 개라면 useState를 여러 번 사용할 수 있다.
useEffect(function, [...]);
- params : 1. 어떤 effect를 발생하는 함수. 2. (조건부 effect) effect가 종속되어 있는 값의 배열.
- return(정리 effect) : 정리(clean-up) 함수
const value = useContext(MyContext);
- params : context 객체(React.createContext에서 반환된 값)
- return : 그 context의 현재 값
const MyContext = React.createContext(defaultValue);
- Context 객체를 만듦
- defaultValue 매개변수는 적절한 Provider를 찾지 못한 경우 쓰이는 값.
MyContext.Provider value={어떤 값}
- Context 오브젝트에 포함된 React 컴포넌트인 Provider는, context를 구독하는 컴포넌트들에게 context의 변화를 알리는 역할
- Provider 컴포넌트는 value prop을 받아서 이 값을 하위에 있는 컴포넌트에게 전달
👉 Provider 하위에서 context를 구독하는 모든 컴포넌트는 Provider의 value prop가 바뀔 때마다 다시 렌더링- Provider 하위에 또 다른 Provider를 배치하는 것도 가능하며, 이 경우 하위 Provider의 값이 우선시됨
const themes = {
light: {
foreground: "#000000",
background: "#eeeeee",
},
dark: {
foreground: "#ffffff",
background: "#222222",
}
};
const ThemeContext = React.createContext(themes.light);
function App() {
return (
<ThemeContext.Provider value={themes.dark}>
<ThemedButton />
</ThemeContext.Provider>
);
}
function ThemedButton() {
const theme = useContext(ThemeContext);
return (
<button style={{ background: theme.background, color: theme.foreground }}>
I am styled by theme context!
</button>
);
}