-
Notifications
You must be signed in to change notification settings - Fork 12.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support xml namespaces in JSX #11833
Comments
@mstijak thank you for opening this issue. Would you mind sharing a simple code example? I believe this is an issue for the JavaScript language service. |
From @mstijak on October 16, 2016 20:37 I'm developing a framework which offers advanced data-binding options. It's a non-standard use case, but namespaces provide a very convenient syntax. This is how you declare a two-way data binding:
You can see the full example here: Also, I noticed that of the leading React developers is considering using |
From @mstijak on October 25, 2016 10:48 It looks like this: |
This issue is now awaiting more feedback. This means we'd like to hear from more people who would be helped by this feature, understand their use cases, and possibly contrast with other proposals that might solve the problem in a simpler way (or solve many other problems at once). If this feature looks like a good fit for you, please use the 👍 reaction on the original post. Comments outlining different scenarios that would be benefited from the feature are also welcomed. |
The vast majority of JSX users are probably using it for React and they decided to not use the full spec of JSX for now. My main problem is that VSCode throws a syntax error. Having a major editor declining this feature is hurting development of other JSX target libraries and frameworks. My personal use case is similar to the one of @mstijak. I created a babel plugin for jsx directives that could utilise the syntax in a very beautiful way (in my opinion ;)) For example I'd love to have this supported by typescript. Let me know if I can help with anything. |
I work at Adobe on a framework that uses namespaced attributes for data-binding ( Since namespaced tags/attributes are valid JSX and the rest of the ecosystem supports this behavior, it seems reasonable that TypeScript should not consider namespaces to be a syntax error. Similarly, I'm available to help with a patch if it would be accepted. |
@mcav we would be open to take a PR for the change. We would expect this to stay an error under |
@mcav implementation suggestion - we have a function |
I'm creating some babel transformer to enhance React's JSX support too. |
This feature will also help someone who use vuejs in jsx. See this repo babel-plugin-jsx-event-modifiers. Thanks. |
I'm using https://facebookincubator.github.io/fbt for translations in .tsx and it has a neat way of doing string interpolation of text and other markup. Unforunately I'm restricted to using functional API (which is more limited) since namespaces are not supported. Muting errors when passing |
JSX namespace errors are parse errors. They're not mute-able, since parse error ruin our basic understanding of the structure of the code. We'd need basic parsing support, at least. |
I believe this feature will aid in the creation of domain-specific XML templating languages. I was going to try my hand at one myself, but am somewhat stopped by this - for me, TypeScript is a huge win for such a thing and a big stamp of maturity (which I can sense is at question here). In this particular case, I was considering applying it to NETCONF payloads. Namespaces are very important as config in this case is from many different namespace'd modules. Benefits of JSX in this domain:
Benefits of TypeScript in this domain:
tl;dr I think this feature applied to NETCONF has the possibility of tightening up the tech stack |
I have been using JSX as a DSL similar to something like Svelte for the past few years in SolidJS(https://github.com/ryansolid/solid). Having this feature to stop using weird prefix naming would clean things up considerably, especially for patterns like custom directives etc. It would basically blow things wide open in terms of the expressiveness of the JSX. Seeing this just getting past TS in preserve mode would make such a big difference for the API design space of the library. |
I want to point out that using Babel with JSX namespace works easily. There is no wierd gotchas or config switch. I have used them to support XML namespaces in Solid and intend to use them the way Vue/Svelte does. So I was very surprised to find out TypeScript is completely broken in this regard even with preserve. There is no way to get around this: const d = <div namespace:attribute={d} /> In preserve mode ends up as: const d = <div namespace attribute={d}/>; Regardless of other considerations like typing I think at a minimum this needs to be addressed as it breaks user code for no obvious reason. |
From @mstijak on October 14, 2016 6:29
Visual Studio Code reports syntax errors if namespaces are used inside JSX.
Namespaces are not supported by React (babel-plugin-transform-react-jsx),
but Babel correctly parses them (babel-plugin-syntax-jsx).
Is this something that should be added directly to VSCode or an extension would be a better choice?
WebStorm and Sublime Text do not have this problem.
Copied from original issue: microsoft/vscode#13728
The text was updated successfully, but these errors were encountered: