GithubHelp home page GithubHelp logo

Comments (2)

geotre avatar geotre commented on May 29, 2024

This is not an issue with closure variables, I think maybe just a slight misunderstanding of how Karax works.

Here's what is happening from Karax's point of view, when you use the code in case 2:

  1. It's told that whenever something changes, it should call createDom to get the latest vdom tree (you tell it this with the setRenderer call)
  2. It calls createDom to get the initial vdom tree to render. createDom initializes lines as an empty seq, then returns a tree of VNodes representing the desired state of the dom. This initial tree does not include any text from lines, as it is empty
  3. It renders that initial tree to the page, in doing so attaches an onclick handler to the button element. This handler is wrapped so that it includes a call to redraw()
  4. You click the button, firing the onclick event handler
  5. The event handler adds a string to the lines seq, then calls redraw()
  6. To redraw the app, Karax calls createDom to get the latest updated version of the vdom tree
  7. createDom initializes lines as an empty seq, then returns a tree of vnodes. This tree again does not include any text from lines, as it is empty
  8. Karax diffs the two trees, but does not find any changes as they are the same, so nothing happens

This is not a bug in Karax, so there is no error message expected

from karax.

hamidb80 avatar hamidb80 commented on May 29, 2024

thanks for your nice & complete explanation,

I was misunderstood,

from karax.

Related Issues (20)

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.