Giter VIP home page Giter VIP logo

Comments (6)

developit avatar developit commented on May 1, 2024 1

The backspace/delete issue is only in IE9, the remainder of issues are for making checkboxes and radio buttons magically fire onChange handlers using onClick (not a logical choice IMO, since onChange works fine for uncontrolled components and onClick works fine for controlled components), and for some oddities around <select> inputs that I have yet to observe in Preact (not sure why).

Here's React's onChange abstraction: https://github.com/facebook/react/blob/master/src/renderers/dom/client/eventPlugins/ChangeEventPlugin.js

Since Preact tries to avoid browser hacks and legacy APIs whenever possible, I thinking we should move this issue into preact-compat, so we can track progress on it there. preact-compat doesn't currently have any event normalization, but I think we're going to need at least a rudimentary solution in order to have consistency when pulling in third party libraries.

from preact.

developit avatar developit commented on May 1, 2024

The only normalization React does for onChange is for checkboxes - I find that confusing, since otherwise events are supposed to just work like DOM events, but they have invented new semantics for checkboxes.

Preact doesn't aim to support IE8 directly, which means you can use the native onInput event.
Demos here and here.

If this meets your needs, we can close the issue. Let me know!

from preact.

chrisdavies avatar chrisdavies commented on May 1, 2024

Hm. That's not quite right. onChange is something they do in a non-standard, but very helpful way.

For example, the following component will live-update the label as you type (assuming that updateValue is a function that updates the redux state or whatevs):

function Example({value, updateValue}) {
  return (
    <div>
       <label>Value is {value}</label>
       <input onChange={e => updateValue(e.target.value)} value={value} />
    </div>
  )
}

See their docs here as a reference: https://facebook.github.io/react/docs/forms.html

Preact is a really impressive accomplishment, by the way! I forgot to mention that. :)

from preact.

developit avatar developit commented on May 1, 2024

@chrisdavies Right, yes my explanation was off with regards to the event timing. That said though, the behaviour React awkwardly patches into onChange is exactly exactly how onInput works, isn't it?

Seems better to just use onInput, though I'm making a note that preact-compat should probably be normalizing onChange how React does.

from preact.

chrisdavies avatar chrisdavies commented on May 1, 2024

preact-compat does seem like a good place to stick it.

Here's a working example:
https://jsfiddle.net/69z2wepo/33832/

It's not quite the same as onInput as that behaves inconsistently across browsers. Some ignore delete/backspace, etc. I'm not 100% aware of all the differences, but I think React does a little cross-browser normalization magic in its onChange hijacking.

from preact.

developit avatar developit commented on May 1, 2024

@chrisdavies I'm going to close this issue since there is now preactjs/preact-compat#20. Cheers!

from preact.

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.