Create html elements from jsx/tsx syntax
// tsconfig.json
{
"compilerOptions": {
"jsx": "react",
"jsxFactory": "createElement"
}
}
JSX/TSX code:
import { createElement } from 'h-document-element';
document.body.appendChild(
<div>
<div id="greet" />
<button onClick={() => alert('Hi!')}>Say</button>
</div>
);
Equivalent plain JavaScript code
const divGreetElement = document.createElement('div');
divGreetElement.id = 'greet';
const buttonElement = document.createElement('button');
buttonElement.onclick = () => alert('Hi!');
buttonElement.append('Say');
const divElement = document.createElement('div');
divElement.append(divGreetElement, buttonElement);
document.body.appendChild(divElement);
Only modern browsers are supported:
- Chrome 69
- Edge 76
- Firefox 62
- Opera 56
- Safari 12
If you need IE, you need polyfill for: