Skip to content

lit-ui-router / RoutedLitElement

Interface: RoutedLitElement<T> ​

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

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:289

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:295