4 ms·
What's it missing?
by forgotusername6 3y ago
What's it missing?
- richeyryan 3y agoI suspect they want better condition handling. Because JavaScript lacks a useful conditional expression beyond ternary expressions, condition handling in JSX generally uses boolean operators or ternary expressions. Suppose the conditional logic is in any way complex. In that case, your choice is to use nested ternary expressions, which can be hard to read or to somehow break the condition out of the JSX using a helper function or separate component so you can use if statements in a regular function context. SolidJS added conditional helpers to its JSX flavour to address this issue[1]. The React team seems ideologically opposed to the idea as it presumably moves JSX away from using only JavaScript for handling logic. [1]https://www.solidjs.com/docs/latest/api#show https://www.solidjs.com/docs/latest/api#show
- tauchunfall 3y ago>I suspect they want better condition handling. Because JavaScript lacks a useful conditional expression beyond ternary expressions, condition handling in JSX generally uses boolean operators or ternary expressions. If a condition in JSX gets too complex I normally extract a component-level function and call it from the JSX part of the component.
- _betty_ 3y agoknowing both i used to be frustrated by jsx's lack of support for plain if and for loops like razor has (eg map and the weird && syntax we general end up with) eg ``` <ul> @foreach(var item in list) { <li>@item.name</li> } </ul> ``` of course this idea goes against jsx's implementation (as it's just nested functions) and paradigm of being html in plain javascript rather than an interpreted templating language. some of the differences i really like (like being able to assign compoents to variables, pretty sure razor doesn't have anything like that).
- javcasas 3y agoThe thing about jsx is that I don't have to learn the special syntax and rules that govern the @foreach construct. jsx map accepts a js function which should return a jsx element. Can I use...? If it works in js, yes.
- _betty_ 3y agoForeach in razor is just c# too, so it's not a language thing it's more what it transpiles to.