- ๋์์ง๋ ์ ๋๋ฉ์ด์ ์ ์ปค์คํ ํ๊ฒ ๋ณ๊ฒฝํ ์ ์๋๊ฐ?
- ๋์์ง๋ Toast UI๋ฅผ ์ปค์คํ ํ๊ฒ ๋ณ๊ฒฝํ ์ ์๋๊ฐ?
- NPM ์ถ์๋ ์๋ฃํ์๋๊ฐ?
- Static Typing์ด ๋์ด์๋๊ฐ?
- ์ฌ์ฉํ๊ณ ์ถ์๊ฐ?
์ ์ ๋์
ํด๋ฆญํ๋ฉด ๋ด๋ ค๊ฐ๋ค
๋น ๋ฅธ ๋์
์ธ ์ค ์์ฝ
ToastProvider
๋กToast UI
๋ฅผ ๋ณด์ฌ์ค ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ผ๋ค.- ๊ฐ์ผ ์ปดํฌ๋ํธ์์
useToast
๋ฅผ ํธ์ถํดToast UI
๋ฅผ ํธ๋ฆฌ๊ฑฐํ ํจ์๋ฅผ ๋ฐ๋๋ค. - ํจ์๋ฅผ ํธ์ถํ์ฌ
Toast UI
๋ฅผ ๋ ๋๋งํ๋ค.
1. ToastProvider
๋ก Toast UI
๋ฅผ ๋ณด์ฌ์ค ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ผ๋ค.
// index.js
import React from "react";
import ReactDOM from "react-dom/client";
import TestContainer from "./@components/TestContainer";
import ToastProvider from "./@components/ToastProvider";
const root = ReactDOM.createRoot(document.getElementById("root"));
//TestContainer์์ Toast UI๋ฅผ ์ถ๋ ฅํ ๊ฒ์ด๋ฏ๋ก ToastProvider ์ปดํฌ๋ํธ๋ก ๊ฐ์ธ์ค๋ค.
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<React.StrictMode>
<ToastProvider>
<TestContainer />
</ToastProvider>
</React.StrictMode>
);
2. ๊ฐ์ผ ์ปดํฌ๋ํธ์์ useToast
๋ฅผ ํธ์ถํด Toast UI
๋ฅผ ํธ๋ฆฌ๊ฑฐํ ํจ์๋ฅผ ๋ฐ๋๋ค.
// @components/TestContainer/index.jsx
const TestContainer = () => {
// useToast ํ
์ผ๋ก ๋ถํฐ Toast UI๋ฅผ ํธ๋ฆฌ๊ฑฐํ ํจ์๋ฅผ ๋ฐ์๋ธ๋ค.
const { displayMessage } = useToast();
// ...
return (
<Styled.Root>
<Styled.Button onClick={onClickTestContainer}>ํด๋ฆญํด๋ณด์ธ์</Styled.Button>
</Styled.Root>
);
};
3. ํจ์๋ฅผ ํธ์ถํ์ฌ Toast UI
๋ฅผ ๋ ๋๋งํ๋ค.
// @components/TestContainer/index.jsx
const TestContainer = () => {
const { displayMessage } = useToast();
// ํจ์๋ฅผ ํธ์ถํ์ฌ `Toast UI`๋ฅผ ๋ ๋๋งํ๋ค.
const onClickTestContainer = () => {
displayMessage("์ค์ฐ์
๋๋ค", false);
};
return (
<Styled.Root>
<Styled.Button onClick={onClickTestContainer}>ํด๋ฆญํด๋ณด์ธ์</Styled.Button>
</Styled.Root>
);
};