MSWComponent
import { useEffect, useState } from "react";
export const MSWComponent = ({ children }: { children: React.ReactNode }) => {
const [mswReady, setMswReady] = useState(false);
useEffect(() => {
const init = async () => {
const initMsw = await import("./index").then((res) => res.initMsw);
await initMsw();
setMswReady(true);
};
if (!mswReady) {
init();
}
}, [mswReady]);
return <>{children}</>;
};
index.ts
export async function initMsw() {
if (typeof window === "undefined") {
const { server } = await import("../mocks/server");
server.listen();
} else {
const { worker } = await import("../mocks/browser");
await worker.start();
}
}
server.ts
import { setupServer } from "msw/node";
import { handlers } from "./handlers";
export const server = setupServer(...handlers);
broswer.ts
import { setupWorker } from "msw/browser";
import { handlers } from "./handlers";
export const worker = setupWorker(...handlers);