diff --git a/packages/example/src/TestUi1.ts b/packages/example/src/TestUi1.ts index 4beff1c..bbb4586 100644 --- a/packages/example/src/TestUi1.ts +++ b/packages/example/src/TestUi1.ts @@ -6,6 +6,6 @@ import { TestUi1Component } from "./TestUi1Component" export default class TestUi1 extends Control { // Called when the node enters the scene tree for the first time. _ready(): void { - Renderer.render(React.createElement(TestUi1Component), this) + Renderer.renderComponent(this, TestUi1Component) } } diff --git a/packages/react-godot-renderer/src/Renderer.ts b/packages/react-godot-renderer/src/Renderer.ts index eb5bdd9..76248f4 100644 --- a/packages/react-godot-renderer/src/Renderer.ts +++ b/packages/react-godot-renderer/src/Renderer.ts @@ -1,10 +1,26 @@ +/** biome-ignore-all lint/complexity/noBannedTypes: {} is the "empty props" type in React */ import type { Node, NodePathMap } from "godot" +import * as React from "react" import * as Reconciler from "./Reconciler.js" const ConcurrentRoot = 1 -export const render = (element: React.ReactNode, container: Node, callback?: () => void): number => { +export const renderComponent: { + ( + container: Node, + component: React.FC<{}>, + ): void +

( + container: Node, + component: React.FC

, + props: NoInfer

, + ): void +} = ( + container: Node, + component: React.FC<{}>, + props?: Record, +): void => { const reconciler = Reconciler.make() if (!(container as any)._rootContainer) @@ -18,10 +34,9 @@ export const render = (element: React.ReactNode, container: Node, c console.error, ) - return reconciler.updateContainer( - element, + reconciler.updateContainer( + React.createElement(component, props), (container as any)._rootContainer, null, - callback, ) }