샌드박스 앱 렌더링 질문 있습니다

현재 webview를 통해 개발 중입니다.

먼저 App.tsx 파일입니다.

// App.tsx
import { Button } from '@toss/tds-mobile';

const App = () => {
  return (
    <div
      style={{
        flex: 1,
        padding: '20px',
        backgroundColor: 'lightblue',
        height: '100vh',
      }}
    >
      {/* 1. 일반 텍스트가 보이는지 확인 */}
      <h1>렌더링 테스트</h1>

      {/* 2. 버튼이 동작하는지 확인 */}
      <Button style={{ backgroundColor: 'blue', color: 'white' }}>버튼</Button>

      {/* 3. 기본 버튼 */}
      <Button>기본 버튼</Button>
    </div>
  );
};

export default App;

그리고 문제가 되는 코드 두 가지는 아래와 같습니다.

import React from 'react';
import ReactDOM from 'react-dom/client';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { Provider as JotaiProvider } from 'jotai';
// 첫 번째 main.tsx
import App from '@/App';
import { Button } from '@toss/tds-mobile';
import '@/index.css';
import { TDSMobileAITProvider } from '@toss/tds-mobile-ait';

// QueryClient 인스턴스 생성
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      // 실패 시 1번만 재시도
      retry: 1,
      // 웹뷰에서는 포커스 재진입 시 리패치 방지
      refetchOnWindowFocus: false,
    },
  },
});

ReactDOM.createRoot(document.getElementById('root')!).render(
  <React.StrictMode>
    {/* 데이터 페칭 */}
    <QueryClientProvider client={queryClient}>
      {/* 전역 상태 관리 */}
      <JotaiProvider>
        {/* 디자인 시스템 / AIT Provider */}
        <TDSMobileAITProvider>
          <App />
        </TDSMobileAITProvider>
      </JotaiProvider>
    </QueryClientProvider>
  </React.StrictMode>,

);
// 두 번째 main.tsx
import { StrictMode } from 'react';
import ReactDOM from 'react-dom/client';
import { ThemeProvider } from '@toss/tds-mobile';
import './index.css';
import App from '@/App';

ReactDOM.createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <ThemeProvider>
      <App />
    </ThemeProvider>
  </StrictMode>,
);

첫 번째 main.tsx의 결과는 아래와 같습니다.

두 번째 main.tsx의 결과는 아래와 같습니다.

왜 첫 번째 코드는 제대로 렌더링이 안되는 지, 해결 방법이 무엇인지 알고 싶습니다. 참고로 아래 코드로 수행해도 빈 화면이 뜨는 것을 보면 라이브러리 간의 충돌은 아니지 않을까 싶습니다. 혹시 필요하신 파일의 코드가 있으면 댓글로 첨부하겠습니다~

import { StrictMode } from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from '@/App';
import { TDSMobileAITProvider } from '@toss/tds-mobile-ait';

ReactDOM.createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <TDSMobileAITProvider>
      <App />
    </TDSMobileAITProvider>
  </StrictMode>,
);

안녕하세요. 비슷한 이슈 해결 후 답변 달아두었는데 참고해보세요!

1개의 좋아요

감사합니다! 확인해보겠습니다~

1개의 좋아요