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
Always use double quotes for JSX and properly escape #126
Conversation
JSX quotes are unfortunately using html escaping. Also, we should disregard the single-quote option for JSX quotes as we always want double quotes.
// http://stackoverflow.com/a/7124052 | ||
function htmlEscapeInsideDoubleQuote(str) { | ||
return str | ||
.replace(/&/g, '&') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are we doing this in the formatter? Won't this continually replace the &
in &
if you successively print a file multiple times?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The parser unescapes the string. So if you write <div id="&" />
, str
here will be &
and not &
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It does?! I'm confused! In JavaScript "&"
is just a normal string value, it doesn't mean anything until it touches the DOM right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
JSX was supposed to be HTML in JS so it borrowed the HTML escaping format for strings literals. This is somethint that we are not happy about and if we are ever doing jsx2 we'll fix this. Until then we have to live with it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah interesting!
JSX quotes are unfortunately using html escaping. Also, we should disregard the single-quote option for JSX quotes as we always want double quotes.