diff --git a/.changeset/hip-eels-speak.md b/.changeset/hip-eels-speak.md new file mode 100644 index 00000000..51459e2f --- /dev/null +++ b/.changeset/hip-eels-speak.md @@ -0,0 +1,7 @@ +--- +'@tanstack/lit-virtual': patch +--- + +fix(lit-virtual): create Virtualizer instance before hostConnected + +When creating an instance of the reactive controller in `connectedCallback`, calling `addController` will synchronously call `hostConnected` on the controller. This means that `this.virtualizer` will still be `undefined`. diff --git a/packages/lit-virtual/src/index.ts b/packages/lit-virtual/src/index.ts index 7a00af05..75b3755a 100644 --- a/packages/lit-virtual/src/index.ts +++ b/packages/lit-virtual/src/index.ts @@ -25,8 +25,6 @@ class VirtualizerControllerBase< host: ReactiveControllerHost, options: VirtualizerOptions, ) { - ;(this.host = host).addController(this) - const resolvedOptions: VirtualizerOptions = { ...options, onChange: (instance, sync) => { @@ -35,13 +33,15 @@ class VirtualizerControllerBase< }, } this.virtualizer = new Virtualizer(resolvedOptions) + + ;(this.host = host).addController(this) } public getVirtualizer() { return this.virtualizer } - async hostConnected() { + hostConnected() { this.cleanup = this.virtualizer._didMount() }