Skip to content

lit-ui-router / RoutedLitElement

Interface: RoutedLitElement<T>

Defined in: packages/lit-ui-router/src/interface.ts:277

A LitElement class constructor that can be used in state declarations.

The class should extend LitElement. The router delivers UIViewInjectedProps two ways: as a constructor argument on first render, and by assigning the _uiViewProps property on every render (the only channel that fires when a sticky instance is reused). Constructor args are optional — argless constructors, as is typical for custom elements, work too. The sticky property can be set to true to reuse the same component instance across state transitions.

Examples

Constructor injection

ts
class UserList extends LitElement {
  _uiViewProps: UIViewInjectedProps;

  constructor(props: UIViewInjectedProps) {
    super();
    this._uiViewProps = props;
  }

  render() {
    return html`<h1>Users</h1>`;
  }
}

router.stateRegistry.register({
  name: 'users',
  url: '/users',
  component: UserList
});

Argless constructor with property injection (typical Lit)

ts
class UserDetail extends LitElement {
  // reactive property: sticky reuse re-renders when props are reassigned
  @property({ attribute: false }) _uiViewProps?: UIViewInjectedProps;

  render() {
    return html`<h1>${this._uiViewProps?.transition?.params().id}</h1>`;
  }
}

Extended by

Type Parameters

Type ParameterDefault type
T extends DefaultResolvesTypeDefaultResolvesType

Constructors

Constructor

ts
new RoutedLitElement(props): LitElement & {
  _uiViewProps?: UIViewInjectedProps<T>;
};

Defined in: packages/lit-ui-router/src/interface.ts:284

Construct signature. The router always passes props; classes may declare the parameter required, optional, or not at all.

Parameters

ParameterType
propsUIViewInjectedProps<T>

Returns

LitElement & { _uiViewProps?: UIViewInjectedProps<T>; }

Properties

PropertyTypeDescriptionDefined in
sticky?booleanIf true, the same component instance is reused across state transitionspackages/lit-ui-router/src/interface.ts:289