From 06096dcc0c9be9c14797e1337410b1864dac5656 Mon Sep 17 00:00:00 2001 From: tbitw2549 Date: Sat, 15 Jun 2024 01:06:47 +0300 Subject: [PATCH] feat: add event-based lazy loading --- docs/3.api/3.utils/create-event-loader.md | 33 ++++++++++++++++ packages/nuxt/src/app/composables/hydrate.ts | 12 ++++-- packages/nuxt/src/components/loader.ts | 8 +++- .../runtime/client-delayed-component.ts | 38 ++++++++++++++++++- packages/nuxt/src/imports/presets.ts | 2 +- test/basic.test.ts | 6 +++ .../basic/components/DelayedEvent.client.vue | 5 +++ .../basic/components/DelayedEvent.server.vue | 5 +++ .../pages/lazy-import-components/index.vue | 1 + 9 files changed, 104 insertions(+), 6 deletions(-) create mode 100644 docs/3.api/3.utils/create-event-loader.md create mode 100644 test/fixtures/basic/components/DelayedEvent.client.vue create mode 100644 test/fixtures/basic/components/DelayedEvent.server.vue diff --git a/docs/3.api/3.utils/create-event-loader.md b/docs/3.api/3.utils/create-event-loader.md new file mode 100644 index 000000000..31f60eb27 --- /dev/null +++ b/docs/3.api/3.utils/create-event-loader.md @@ -0,0 +1,33 @@ +--- +title: 'createEventLoader' +description: A utility function to select the events used for event-based delayed hydration. +links: + - label: Source + icon: i-simple-icons-github + to: https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/composables/hydrate.ts + size: xs +--- + +You can use this utility to set specific events that would trigger hydration in event-based delayed hydration components. + +## Parameters + +- `options`: An array of valid HTML events. + +## Example + +If you would like to trigger hydration when the element is either clicked or has the mouse over it: + +```vue [pages/index.vue] +