-
Notifications
You must be signed in to change notification settings - Fork 112
Description
ํ์ด์ง๋ค์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ๋ถ๋ฅํด ๋ช๊ฐ์ Stack ์ ๋ง๋ค์์ต๋๋ค. ๊ฐ์ Stack ๋ด์ ํ์ด์ง๋ค๋ผ๋ฆฌ๋ stackflow ๊ฐ ๋ผ์ฐํ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ , ๋ค๋ฅธ Stack ์ ํ์ด์ง๋ก ์ด๋ํ ์์๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ๊ฐ ๋ผ์ฐํ ์ ํฉ๋๋ค.
๊ฐ์ Stack ๋ด์ ํ์ด์ง๋ค์ url ๋ฒ ์ด์ค๋ฅผ ํต์ผ์์ผฐ๊ณ , ์์ผ๋์นด๋๋ฅผ ์ถ๊ฐํด ๋ผ์ฐํฐ๋ ๋ฒ ์ด์คurl ๋ง ๊ตฌ๋ถํ๊ฒ ํ์์ต๋๋ค.
๊ทธ๋์ ๋ฒ ์ด์คurl ์ด ๋ฌ๋ผ์ง ๋์๋ง (์๋ก ๋ค๋ฅธ Stack ์ผ๋ก ํ์ด์ง ์ด๋์ ํ ๋์๋ง) ๋ฆฌ์กํธ ๋ผ์ฐํฐ๊ฐ ๋์ํ๊ฒ ํ๋๊ฒ ์๋์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ๊ธฐ์กด์ stackflow ๋ก๋ง ํ์ด์ง๋ค์ ๊ด๋ฆฌํ ๋๋ ํ์ด์ง ์ ํ ์ ๋๋ฉ์ด์ (UIํ๋ฌ๊ทธ์ธ) ์ด ๊นจ์ง์ง ์์๋๋ฐ ๊ฐ์ด ์ฌ์ฉ์ ํ๋๊น ์ ๋๋ฉ์ด์ ์ด ์ ์์ ์ผ๋ก ๋์์ ํ์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
์ ์ค๊ณ๊ฐ ์ถฉ๋์ ์ผ์ผํฌ๋งํ, ํน์ stackflow ์ ์ฒ ํ๊ณผ ๋ง์ง ์๋ ์ค๊ณ์ธ์ง ๊ถ๊ธํฉ๋๋ค!
Stackflow์ ํ๋ฌ๊ทธ์ธ/์ ๋๋ฉ์ด์
/ํ์คํ ๋ฆฌ ์ฒด๊ณ์์, React Router + ์ฌ๋ฌ ์คํ ์กฐํฉ์ด ์ ์ด์ Stackflow ์ค๊ณ ์ฒ ํ๊ณผ ์ถฉ๋ํ๋ ๊ตฌ์กฐ์ธ์ง ๊ถ๊ธํฉ๋๋ค.
๋ง์ฝ ๊ทธ๋ ๋ค๋ฉด, ํ์ด์ง๋ค์ ๊ด์ฌ์ฌ๋ณ๋ก stack ์ผ๋ก ๋ฌถ์ด ์ฌ๋ฌ ์คํ์ผ๋ก ํ์ด์ง๋ค์ ๊ด๋ฆฌํ๊ณ ์ถ์ ๋ ์ด๋ป๊ฒ ํ๋์ง ๊ถ๊ธํฉ๋๋ค.
ํ์ฌ ๊ตฌ์กฐ
React Router
์ฑ์ ์์ ๊ตฌํ(์ธ์ฆ / ๋ฉ์ธ ์ฑ)์ ๊ตฌ๋ถํ๋ ๋ฐ ์ฌ์ฉ
/auth/* โ AuthStack
/app/* โ MainStack
์ต์์ ์ง์
์ /auth/login์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ
const AppRouter = () => {
const router = createBrowserRouter([
{
path: '/',
element: <Navigate to="/auth/login" replace />,
},
{
path: '/auth/*',
element: <AuthStack />,
},
{
path: '/app/*',
element: <MainStack />,
},
{
path: '*',
element: <div>404 Not Found</div>,
},
])
return <RouterProvider router={router} />
}
Stackflow - AuthStack
/auth/* ๊ฒฝ๋ก์์ ์๋
Stackflow๊ฐ ๋ด๋ถ ์กํฐ๋นํฐ(ํ์ด์ง) ์ ํ ๊ด๋ฆฌ
๋ฑ๋ก๋ ์กํฐ๋นํฐ:
Login โ /auth/login
TeamSelect โ /auth/team-select
NickName โ /auth/nickname
export const { Stack: AuthStack, useFlow: useAuthFlow } = stackflow({
transitionDuration: 350,
plugins: [
basicRendererPlugin(),
basicUIPlugin({ theme: 'cupertino' }),
historySyncPlugin({
routes: {
Login: '/auth/login',
TeamSelect: '/auth/team-select',
NickName: '/auth/nickname',
},
fallbackActivity: () => 'Login',
}),
],
activities: {
Login: LoginPage,
TeamSelect: TeamSelectPage,
NickName: NickNamePage,
},
})
Stackflow - MainStack
/app/* ๊ฒฝ๋ก์์ ์๋
Stackflow๊ฐ ๋ด๋ถ ์กํฐ๋นํฐ(ํ์ด์ง) ์ ํ ๊ด๋ฆฌ
๋ฑ๋ก๋ ์กํฐ๋นํฐ:
Home โ /app/home
LiveRecord โ /app/live-record
export const { Stack: MainStack, useFlow: useMainFlow } = stackflow({
transitionDuration: 350,
plugins: [
basicRendererPlugin(),
basicUIPlugin({
theme: 'cupertino', // cupertino | android ๋๊ฐ์ง ์ต์
์์
}),
historySyncPlugin({
routes: {
Home: '/app/home',
LiveRecord: '/app/live-record',
},
fallbackActivity: () => 'Home',
}),
],
activities: {
Home: HomePage,
LiveRecord: LiveRecordPage,
},
})
base url ๊ณผ ์์ผ๋์นด๋๋ฅผ ์ฌ์ฉํด ๋ฆฌ์กํธ ๋ผ์ฐํฐ๊ฐ baseurl ์ด ๋ฌ๋ผ์ง ๋์๋ง ๋์ํ๋๋ก ์๋ํ๋๋ฐ Stack ๋ด์์ ํ์ด์ง ์ด๋์ ํ ๋ ์ ๋๋ฉ์ด์ ์ด ๊นจ์ง๋๋ค.