Skip to content

Web Component Renderer and General Renderer Guidance #124

@EisenbergEffect

Description

@EisenbergEffect

I'm working on a Web Components course, and I'd like to add a lesson on Starbeam, showing how to integrate it with a Web Component. Looking through the documentation, it's very clear how to use Starbeam for creating reactive models (great job!) but not so clear on how to build the library/framework integrations. Can anyone provide me some guidance on this?

My situation is pretty simple, I just want a basic DOM integration. For example, here's what I do with Reactively to demonstrate that:

const template = html`
  <button id="decrement">-</button>
  <span id="value"></span>
  <button id="increment">+</button>
`;

class MyCounter extends WebComponent {
  #counter = reactive(0); // this would be replaced by a Starbeam Cell

  constructor() {
    super();
    this.refs.decrement.addEventListener("click", () => this.#counter.value--);
    this.refs.increment.addEventListener("click", () => this.#counter.value++);
    // How best do I do this? Do I need to use a Resource?
    reactive(() => this.refs.value.innerText = this.#counter.value, { effect: true }); 
  }
}

// Below tells Reactively's effect system to start scheduling effect updates.
// How would I do this with Starbeam?
autoStabilize(); 

Is there an easy way to trigger batch renders using a micro task queue or rAF, for example?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions