| ▲ | dashersw 4 days ago | |||||||
I personally agree. But the default expectation (and therefore the design) should follow the practices of the language. If JS allows mutations on the objects passed to a function to be reflected on the parent, I believe frameworks should follow this paradigm. And in the end in Gea developers have full control over this, just in the same way they do in real life. `child({ ...obj })` easily solves this, for example, in both idiomatic JS and in Gea. | ||||||||
| ▲ | mpalmer 4 days ago | parent | next [-] | |||||||
You're using various terms to refer to concepts which are similar but distinct, and it's confusing the issue a bit. > But the default expectation (and therefore the design) should follow the practices of the language Languages do not have practices, developers do. Regarding "idiom": core language features/semantics are not idioms. In programming, "idiom" usually refers to small commonly-used patterns that reside atop the language. "Mutating objects" is not an idiom, if only because I can think of any number of non-idiomatic uses of mutation. > If JS allows mutations on the objects passed to a function to be reflected on the parent JS "allows" mutations on objects to be "reflected" elsewhere, because that's how mutation works. If JS had to support scoped mutability at the language level, the language would be significantly more complex. But this implies nothing about the value or advisability of using mutation and two-way binding in an application framework. That is a choice on which framework authors usually land on one side or the other. It seems that by more or less equating "idiom", "practice" and "paradigm", you're opting out of the sorts of choices that not only distinguish web frameworks, but simplify the patterns involved in building with them. | ||||||||
| ||||||||
| ▲ | dalmo3 3 days ago | parent | prev | next [-] | |||||||
> `child({ ...obj })` easily solves this, for example Spreading doesn't prevent you from mutating nested fields. The fact that you think this is an easy problem puts all your other choices under question. | ||||||||
| ||||||||
| ▲ | anamexis 4 days ago | parent | prev [-] | |||||||
> But the default expectation (and therefore the design) should follow the practices of the language. If JS allows mutations on the objects passed to a function to be reflected on the parent, I believe frameworks should follow this paradigm. Why? Why should frameworks be beholden to the mutation semantics of the language, particularly with JS where there is no choice of language in the browser? Why should frameworks follow this paradigm? | ||||||||
| ||||||||