<MyList items selectedItem onItemClicked />
Doesn't seem too likely to happen at this point, though. <MyList {...{items, selectedItem, onItemClicked}} />
There's a lot of "gets you most of the way there" hacks with JSX that will fill most needs. Where as you can imagine the incredible cacophony of screaming developers who maintain TypeScript, Preact, IDEs, etc. that would be incensed by breaking changes to JSX introduced just to solve some inconveniences.Doesn't mean the syntax _can't_ change . After all, the `<>` shorthand syntax for fragments was added via cooperation with the Babel and TypeScript teams, and the work on the new `jsx()` replacement for `createElement()` is going the same way.
What would happen with <input disabled /> then?
What if there is a global disabled var?
I really dislike the way they can be abused to litter state and side effects all over React code so easily (e.g. hiding it layers deep in helper functions). And I feel they've made the API worse, such as `this` being replaced with the more clumsy `useRef`, or requiring an empty array to change the behavior of `useEffect`. These are things that break the Principal of Least Astonishment and have consequently led to countless blog posts that try to explain how to do things that were much more straight forward without hooks.
I've written about hooks before in past comments: https://news.ycombinator.com/item?id=19357068
It's been a couple of years since they've been added, and I don't feel the ecosystem has improved because of it. So to me it was a mistake.
I know they will likely not be removed from React, so what I said was more tongue-in-cheek.
It makes it much easier to have composable functions/state, which I love.
They certainly work when you memorise the rules and syntax, but it feels very contrived even when it all makes sense.
This drives me a little crazy too. That behaviour can be easily documented by wrapping it in a function with a name that makes sense, but people litter their React code with non-obvious hooks everywhere. You can reduce a lot of boilerplate (why are you writing empty arrays everywhere!?) and improve readability substantially by wrapping the hooks in more composed and idiomatic functions.
I think that was along the lines of what was intended for hooks, but I don't see it often.