react-flow-node-ts
microsoft/skills
Créez des composants de nœud React Flow avec des types TypeScript, des gestionnaires et une intégration du magasin Zustand pour construire des nœuds personnalisés dans des éditeurs de flux visuels.
...Développer toutNœud React Flow
Créez des composants de nœud React Flow en suivant les modèles établis, avec des types TypeScript appropriés et une intégration au magasin (store).
Démarrage rapide
Copiez les modèles depuis assets/ et remplacez les espaces réservés :
{{NodeName}}→ Nom de composant en PascalCase (par ex.,VideoNode){{nodeType}}→ Identifiant de type en kebab-case (par ex.,video-node){{NodeData}}→ Nom de l'interface de données (par ex.,VideoNodeData)
Modèles
- assets/template.tsx - Composant de nœud
- assets/types.template.ts - Définitions TypeScript
Motif de composant de nœud
export const MyNode = memo(function MyNode({
id,
data,
selected,
width,
height,
}: MyNodeProps) {
const updateNode = useAppStore((state) => state.updateNode);
const canvasMode = useAppStore((state) => state.canvasMode);
return (
<noderesizer></noderesizer><handle></handle>
{/* Contenu du nœud */}
<handle></handle>
>
);
});
Motif de définition de type
export interface MyNodeData extends Record<string> {
title: string;
description?: string;
}
export type MyNode = Node<mynodedata>;
</mynodedata></string>Étapes d'intégration
- Ajoutez le type dans
src/frontend/src/types/index.ts - Créez le composant dans
src/frontend/src/components/nodes/ - Exportez depuis
src/frontend/src/components/nodes/index.ts - Ajoutez les valeurs par défaut dans
src/frontend/src/store/app-store.ts - Enregistrez dans les
nodeTypesdu canevas - Ajoutez au AddBlockMenu et au ConnectMenu
---
name: react-flow-node-ts
description: Create React Flow node components with TypeScript types, handles, and Zustand store integration for building custom nodes in visual workflow editors.
license: MIT
---
# React Flow Node
Create React Flow node components following established patterns with proper TypeScript types and store integration.
## Quick Start
Copy templates from [assets/](assets/) and replace placeholders:
- `{{NodeName}}` → PascalCase component name (e.g., `VideoNode`)
- `{{nodeType}}` → kebab-case type identifier (e.g., `video-node`)
- `{{NodeData}}` → Data interface name (e.g., `VideoNodeData`)
## Templates
- [assets/template.tsx](assets/template.tsx) - Node component
- [assets/types.template.ts](assets/types.template.ts) - TypeScript definitions
## Node Component Pattern
```tsx
export const MyNode = memo(function MyNode({
id,
data,
selected,
width,
height,
}: MyNodeProps) {
const updateNode = useAppStore((state) => state.updateNode);
const canvasMode = useAppStore((state) => state.canvasMode);
return (
<>
<NodeResizer isVisible={selected && canvasMode === 'editing'} />
<div className="node-container">
<Handle type="target" position={Position.Top} />
{/* Node content */}
<Handle type="source" position={Position.Bottom} />
</div>
</>
);
});
```
## Type Definition Pattern
```typescript
export interface MyNodeData extends Record<string, unknown> {
title: string;
description?: string;
}
export type MyNode = Node<MyNodeData, 'my-node'>;
```
## Integration Steps
1. Add type to `src/frontend/src/types/index.ts`
2. Create component in `src/frontend/src/components/nodes/`
3. Export from `src/frontend/src/components/nodes/index.ts`
4. Add defaults in `src/frontend/src/store/app-store.ts`
5. Register in canvas `nodeTypes`
6. Add to AddBlockMenu and ConnectMenu
Tous les fichiers
0 fichiersInstaller react-flow-node-ts
Téléchargez et extrayez les fichiers de compétences dans votre répertoire .claude/skills/.
Télécharger le ZIPClonez le dépôt et copiez les fichiers de compétence dans votre projet.
git clone https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-typescript/skills/react-flow-node-ts # Copy SKILL.md to your .claude/skills/ directory
Copier





Maison
