Code Monkey home page Code Monkey logo

Comments (3)

developit avatar developit commented on July 17, 2024 4

That would work, though it's not possible to skip initial renders in vdom sadly.

Another option might be to allow passing (worker, state) to the main thread side of stockroom? You'd be duplicating the state object from the worker thread, but it seems a decent compromise and it would only add a couple bytes to the library.

from stockroom.

Kanaye avatar Kanaye commented on July 17, 2024

That 's kinda expected, because stockroom initializes the store asynchronous from within the webworker, the state won't be available on first render.

Maybe it would be worth to add a initialized property to the store and maybe a component that only renders it 's children after the store received the initial state.

What do you think @developit ?

from stockroom.

mrhein avatar mrhein commented on July 17, 2024

you could skip first render in a mechanic that you apstract your index...

Think about your normal app is in index.jsx now you add a entry.jsx and link you bundle to entry.jsx instead, export your Store from index.jsx.

now inside of entry.jsx

import Index, { Store } from './index'
import { h, render } from 'preact'

if (DEVMODE && !PRERENDER) {
  require('preact/devtools')
}

Store.subscribe((state) => {
  if (state.warmupDone) {
    const app = document.getElementById('app')
    const body = document.body

    render(<Index store={Store} />, body, app)
  }
})

...but this also require that you have some auto warmup action inside of your worker that set a state like warmupDone....

but this will delay your render in my example about 300 ms but it doesn't metter because i use a prerender engine built on top of preact-render-to-string in the background but you have to think about something like that otherwise this will delay first meaning full render

from stockroom.

Related Issues (15)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.