Comments (4)
Our use cases include purescript-ace
, purescript-echarts
, and probably others. Having a modular, clean, and robust way of using these pre-built DOM-native components is quite important.
from purescript-halogen.
The simplest approach seems to be something like adding a new constructor to HTML
which prevents redraws using thunk
:
data HTML i
= NoRedraw (Unit -> HTML i)
| Text ...
We could then extend that in some simple way, like adding a String
identifier which could be stuck in a data-
attribute and used to implement limited updates:
type Hash = String
data HTML i
= Hashed String (Unit -> HTML i)
| Text ...
If the hashes are equal, we assume the VTree
s are equal and use the previous VTree
. Otherwise, we rerender the HTML
structure.
The issue is that thunk
only gives us access to the previous VTree
, not the HTML
structure it came from.
from purescript-halogen.
Also, @jdegoes, I'm not a vdom
expert yet, but I feel like the "widget" concept might be useful for the examples you mentioned. I'll write up a separate issue for that.
https://github.com/Matt-Esch/virtual-dom/blob/master/docs/widget.md
from purescript-halogen.
I'd agree with that, thunk
is for custom patching logic, widget
is more for things like Ace.
from purescript-halogen.
Related Issues (20)
- `tellAll` function is not re-exported in Halogen module
- Enabling `StateT` with `HalogenM` HOT 1
- Export tellAll from Halogen.Query to Halogen HOT 2
- Reading Effects chapter -> Could not match type ResponseFormat String with type AffjaxDriver HOT 4
- Question: how to handle events coming from a js app? HOT 2
- Communication with JS loaded via CDN HOT 2
- Child component gets rendered outside of parent, being moved to bottom of HTML body HOT 6
- `raise` should not be a blocking operation HOT 8
- Discussion: CSS strategy for halogen applications HOT 20
- Question: body-level events HOT 3
- Order of properties matters when using `value` with `min` / `max` for `InputRange` HOT 3
- Change kind of slots to not be `Type`
- `RenderSpec` doc comment still mentions `h` parameter
- Doc: the examples of "An Aff Example: HTTP Requests" give TypesDoNotUnify Error on Halogen v7 HOT 1
- Select Multiple Selected does not work HOT 4
- A bug? Weird behavior of text input fields. HOT 4
- Child component is destroyed while parent component handles output from that child HOT 5
- Array state updates HOT 4
- open and showModal are missing for dialog HOT 6
- The Component type should have role annotations
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from purescript-halogen.