▲ | SkiFire13 2 months ago | |||||||||||||
> use the DOM element value/textContent/checked/etc as the only source of truth How do you manage redundant state? For example a list with a "select all" button, then the state "all selected"/"some selected"/"none selected" would be duplicated between the "select all" button and the list of elements to select. This is the fundamental (hard) problem that state management needs to solve, and your proposal (along with the one in the OP) just pretends the issue doesn't exist and everything is easy. | ||||||||||||||
▲ | jdsleppy 2 months ago | parent | next [-] | |||||||||||||
They could always fall back to storing a value in a hidden element in the worst case. All/some/none selected is often done with an indeterminate state checkbox https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/... that can represent all three states. Maybe I don't understand the problem you are talking about. | ||||||||||||||
| ||||||||||||||
▲ | johnisgood 2 months ago | parent | prev | next [-] | |||||||||||||
Did you know you can have "stateful" UI without any JavaScript, using pure CSS and HTML? JS-less (Tor) websites use them. I have implemented a fully functional, multi-state CAPTCHA using only HTML + CSS for state simulation, and PHP for real validation. | ||||||||||||||
▲ | athrowaway3z 2 months ago | parent | prev | next [-] | |||||||||||||
I don't think I understand your question, or its just a poor example. Regardless of design pattern or framework; the state all/some/none of a list, should practically never exists as separately updated state variable. Whenever its required you need to derive it.
| ||||||||||||||
▲ | liveafterlove 2 months ago | parent | prev | next [-] | |||||||||||||
That is just select with multi. And one can also have class vs id. | ||||||||||||||
▲ | SvenL 2 months ago | parent | prev [-] | |||||||||||||
A List of items could just contain checkboxes holding the state of selected/not selected. Then it’s a trivial query selector. To get every selected item or to know if every item is selected. |