clientEntry

View Source

Summary

Marks a component as a client entry for client-side hydration.

Signature

function clientEntry<props extends SerializableProps, context>(
  entryId: string,
  component: (handle: Handle<props, context>) => RenderFn,
): EntryComponent<props, context>;

function clientEntry<props extends SerializableProps, context>(
  entryId: string,
  component: (
    handle: Handle<Record<string, never>, context>,
  ) => RenderFn<props>,
): EntryComponent<props, context>;

Example

export const Counter = clientEntry(
  '/js/counter.js#Counter',
  function Counter(handle: Handle<{ initialCount?: number; label: string }>) {
    let count = handle.props.initialCount ?? 0

    return () => (
      <button
        type="button"
        mix={[
          on('click', () => {
            count++
            handle.update()
          }),
        ]}
      >
        {handle.props.label} {count}
      </button>
    )
  }
)

Params

entryId

Module URL with optional export name (format: "/js/module.js#ExportName") by default, or a custom entry identifier when paired with resolveClientEntry

component

Component function that will be hydrated on the client

Returns

The component augmented with entry metadata