Comments (7)
The current behavior is particularly surprising when style
is set to something other than an object literal:
<div style={/* @once */ props.style} />
Currently /* @once */
is ignored in this case. Playground
In any case, I've added some documentation about the current behavior so this is less surprising.
from dom-expressions.
Yeah style and classList are special in that they analyze on a per object expression level. So in this case put the once in front of each property.
<div style={ { width: /* @once */props.width, height: /* @once */props.height }} />
I realize there is nothing stopping us from oncing the whole object as well.
from dom-expressions.
I was just looking how to fix this, the logic seems to be here https://github.com/ryansolid/dom-expressions/blob/main/packages/babel-plugin-jsx-dom-expressions/src/shared/utils.js#L87-L94
Im staring at this not knowing what to do with that information
from dom-expressions.
from dom-expressions.
Yeah I have to admit when I added these features they were compiler only originally. There has been talk about just deprecating @once
all together. It's nice to have the escape hatch. But it is also so specific. And actually doesn't guarantee once, just removes the specific tracking scope.
from dom-expressions.
I heard the expectation is to use a memo instead, is there other approach? Looks to me a bit of a waste, as there's going to be an effect created that is not going to be used, code would be bigger.
For the case in place, can you consider merging it regardless of the future of this feature, it makes it work closer to the intention and of what's expected.
from dom-expressions.
Related Issues (20)
- Serializer fails on recursive objects HOT 6
- `useAssets` is currently no-op in SSR if the markup doesn't have a `<head>`
- Missing `onFocus` HOT 3
- The delegate "addEventListener", it cannot add multiple listeners HOT 3
- feat: add support for attr: and prop: in spread() HOT 2
- bug: custom element readonly prop always converted to readOnly HOT 3
- Bundle gets es6 syntax HOT 3
- Feature: `<head>` bubbling HOT 4
- Miscompilation in version 0.35.19: transformCondition is not defined
- Cannot use `ref` for `Tagged Template`/`lit-dom-expressions` HOT 1
- Closing tag omission in dom `transformElement()` is broken with table/tbody HOT 2
- Ability to use web-components as component HOT 5
- wrong markup structure after omitting closing tags HOT 1
- Feature: symbols for JSX SSR
- Additional HTML closing tag omission HOT 1
- Ability to hide/show element on DOM using solid-js hypserscript
- Can't use `this` on prop function HOT 1
- bug: tagged template literals error when dynamic tag and quoted text as children
- Is it possible to optimize `style.text` to be like `style_text`? HOT 3
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 dom-expressions.