스킬 use-dom
🌐

use-dom

안전

Exécuter du code Web dans les Webviews Expo

Les bibliothèques React uniquement Web comme les graphiques, les surligneurs de syntaxe et les éditeurs de texte enrichi ne peuvent pas s'exécuter directement dans React Native. Cette compétence fournit le pattern de composants DOM Expo pour exécuter du code Web dans une webview sur les appareils natifs tout en effectuant un rendu tel quel sur le Web, permettant une migration progressive du Web vers le natif.

지원: Claude Codex Code(CC)
📊 71 적절함
1

스킬 ZIP 다운로드

2

Claude에서 업로드

설정 → 기능 → 스킬 → 스킬 업로드로 이동

3

토글을 켜고 사용 시작

테스트해 보기

"use-dom" 사용 중입니다. Create a DOM component that displays a chart using recharts

예상 결과:

  • // components/Chart.tsx
  • "use dom";
  •  
  • import { LineChart, Line, XAxis, YAxis, Tooltip } from 'recharts';
  •  
  • interface Props {
  • data: Array<{ name: string; value: number }>;
  • dom?: import('expo/dom').DOMProps;
  • }
  •  
  • export default function Chart({ data }: Props) {
  • return (
  • <LineChart width={400} height={300} data={data}>
  • <XAxis dataKey="name" />
  • <YAxis />
  • <Tooltip />
  • <Line type="monotone" dataKey="value" stroke="#8884d8" />
  • </LineChart>
  • );
  • }

"use-dom" 사용 중입니다. How do I pass data from native to a DOM component?

예상 결과:

Pass data as serializable props (strings, numbers, booleans, arrays, plain objects). The DOM component receives these props and can use them directly. For functions, pass async functions as props to enable communication back to native.

"use-dom" 사용 중입니다. What is the dom prop for?

예상 결과:

The dom prop configures the webview behavior. Common options include: scrollEnabled (disable body scrolling), contentInsetAdjustmentBehavior (control safe area insets), and style (set explicit dimensions). On web, this prop is ignored.

보안 감사

안전
v1 • 1/23/2026

All 63 static findings are false positives. Detected patterns are markdown formatting (backticks for inline code) and TypeScript type annotations (import() for type references) in documentation examples. No executable code with security implications present.

1
스캔된 파일
418
분석된 줄 수
0
발견 사항
1
총 감사 수
보안 문제를 찾지 못했습니다
감사자: claude

품질 점수

38
아키텍처
100
유지보수성
87
콘텐츠
29
커뮤니티
100
보안
91
사양 준수

만들 수 있는 것

Ajouter des graphiques et visualisation de données

Utiliser des bibliothèques de graphiques comme recharts ou chart.js pour afficher des visualisations de données qui nécessitent des API DOM non disponibles dans React Native.

Migrer des composants React Web

Intégrer des composants React existants d'un projet Web dans une application Expo sans réécriture, en les exécutant dans une webview sur natif.

Afficher du code avec surlignage de syntaxe

Afficher des blocs de code avec surlignage de syntaxe en utilisant des bibliothèques comme react-syntax-highlighter qui dépendent du rendu DOM.

이 프롬프트를 사용해 보세요

Composant DOM de base
Créer un composant DOM appelé 'Chart' qui utilise recharts pour afficher un graphique en ligne. Le composant doit accepter une prop 'data' avec un tableau d'objets { name: string; value: number }. Inclure le typage TypeScript approprié pour la prop dom.
Communication Native-Web
Créer un composant DOM qui peut appeler des fonctions natives. Le composant doit avoir une prop 'onSubmit' qui est une fonction async prenant une chaîne de caractères et retournant un booléen. Montrer comment passer ceci depuis le parent natif.
Style CSS dans DOM
Créer un composant DOM qui utilise CSS pour le style. Montrer comment importer un fichier CSS et appliquer des styles aux éléments. Montrer également comment utiliser les styles en ligne comme alternative.
Intégration Router
Créer un composant DOM qui utilise expo-router pour la navigation. Montrer comment passer les paramètres de route depuis le parent natif car useLocalSearchParams ne fonctionne pas directement dans les composants DOM.

모범 사례

  • Gardez les composants DOM concentrés sur des fonctionnalités spécifiques plutôt que de construire des écrans entiers
  • Utilisez des composants natifs pour le chrome de navigation et passez les params de route en tant que props aux composants DOM
  • Bundlez les actifs avec require() au lieu d'utiliser le répertoire public pour un meilleur bundling
  • Testez les composants DOM sur toutes les plateformes cibles car le Web et les webviews natives peuvent rendre légèrement différemment

피하기

  • Mettre des écrans d'application entiers dans des webviews - cela va à l'encontre du but de React Native
  • Oublier la directive 'use dom' - le composant ne fonctionnera pas sans elle
  • Utiliser des API de modules locaux à l'intérieur des composants DOM - les hooks de router comme useLocalSearchParams nécessitent un accès natif
  • Partager l'état entre natif et webview - ils ont des contextes JavaScript isolés

자주 묻는 질문

Qu'est-ce que la directive 'use dom' ?
La directive 'use dom' en haut d'un fichier dit à Expo de traiter ce composant comme un composant DOM. Elle doit être la première instruction du fichier et le composant doit être dans son propre fichier.
Puis-je utiliser n'importe quel paquet npm dans un composant DOM ?
La plupart des paquets npm fonctionnent s'ils sont compatibles avec l'environnement de navigateur. Les paquets qui dépendent des API Node.js ou des modules natifs ne fonctionneront pas. Les bibliothèques comme recharts, react-syntax-highlighter et moment fonctionnent bien.
Comment communique-t-on entre le composant DOM et le code natif ?
Passez des fonctions async en tant que props au composant DOM. La webview peut appeler ces fonctions pour déclencher un comportement natif comme afficher des alertes, enregistrer des données ou naviguer.
Quelle est la différence entre le rendu Web et natif ?
Sur natif (iOS/Android), le composant s'affiche à l'intérieur d'une webview. Sur Web, il s'affiche directement sans wrapper webview. La prop dom est ignorée sur Web.
Puis-je utiliser des composants React Native aux côtés de composants DOM ?
Oui. Importez et utilisez les composants DOM comme tout autre composant. Ils peuvent être mélangés librement avec View, Text et autres composants React Native dans le même écran.
Pourquoi la prop dom est-elle requise ?
La prop dom fournit des informations de type pour la configuration de la webview et est requise pour la prise en charge TypeScript. Même si vous n'utilisez aucune option, vous devez typer la prop pour une prise en charge IDE appropriée.

개발자 세부 정보

작성자

expo

라이선스

MIT

참조

main

파일 구조

📄 SKILL.md