Comments (8)
add one new issue:
In Firefox, edit function can not work well. After appending some chars in editing status and pressing enter key, rendered result is the original value instead of new value.
from preact.
Hi @steven88888 - apologies for the delayed reply. Definitely a bug and something I'm looking into. It seems like something is invalidating the root node of the todomvc example, blurring the input. I'll keep you posted on progress.
from preact.
Just removed from app/index.js
<Router onChange={this.handleRoute}><Noop path="/" /></Router>
and all works fine.
from preact.
@c58 Ah yeah, that makes sense. That was a hack at best anyway, I should have just parsed the URL without pulling in preact-router
.
from preact.
I think i found the problem. Router's nodeType is 3 (text dom node), but it is not a "string" vnode, as expected in isSameNodeType
.
// attempt to pluck a node of the same type from the existing children
if (!child && min<childrenLen) {
for (let j=min; j<childrenLen; j++) {
let c = children[j];
if (c && isSameNodeType(c, vchild)) {
child = c;
children[j] = null;
if (j===childrenLen-1) childrenLen--;
if (j===min+1) min++;
break;
}
}
}
In this case every update will make a redraw from the root, because new children is never equals to previous children.
from preact.
@c58 Hmm - this must be using the old version of preact-router
that was not using High Order components to render children? The package.json
for preact-todomvc has [email protected]
though, which was using High Order (switchover was 1.0.0
).
How are you checking the nodeType value of Router?
Also heads up: the child diffing algo is a bit different in 4.0. Still working on getting my branch pushed!
from preact.
How are you checking the nodeType value of Router?
Just debug in a browser :) Open page, write some letters in input, set a pointer in a line:
if (c && isSameNodeType(c, vchild)) {
and write some letter in an input. And here we are, "c" is a dom node of a Router, vchild is a Router object. c.nodeType is 3.
In my research im using preact 3.4.0 and router 1.2.3
from preact.
If change isSameNodeType
to:
function isSameNodeType(node, vnode) {
if (isString(vnode)) return node.nodeType === 3;
if (isFunctionalComponent(vnode)) return true;
var nodeName = vnode.nodeName;
if (isFunction(nodeName)) return node._componentConstructor === nodeName;
return toLowerCase(node.nodeName) === nodeName;
}
then issues will be fixed
from preact.
Related Issues (20)
- Implement onscrollend event attribute for TypeScript JSX
- TypeScript JSX focus events don't have consistent case HOT 5
- Typescript issues in 10.19.4+ with @mui/material HOT 5
- Provide a boundary between Components and DOM HOT 8
- `preact` `10.9.4+` requires double click or move pointer out of `@headlessui/react` `Tab` panel/button HOT 2
- Unmount hooks should be called during the commit phase to ensure consistency with React HOT 2
- When I attempt to extend HTMLAttributes every intrinsic element becomes of type any HOT 2
- Current plan for event types? HOT 3
- onFocusIn and onFocusOut events incorrectly set HOT 4
- Cannot read properties of undefined (reading '__m')
- `hydrate` doesn't replace attributes at root replaced node HOT 4
- Unable to use hooks in compiled package
- Compatibility issue: Jest mock works in React / fails in Preact when using ForwardRef in a component HOT 2
- Using useState leads to error: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '__H') HOT 3
- Render mui cache inside shadow dom leaves style sheets in head and content unstyled HOT 2
- `defaultValue` incorrectly (?) diffed against prerendered HTML
- Preact 10.20 + @mui/x-data-grid v7 causes datagrid to appear multiple times in dev-mode, but not in preview-mode HOT 1
- Performance of unmounting a context provider
- Runtime error when using an external react module HOT 5
- Incorrect namespacing of MathML elements
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 preact.