OCaml JSX for ReasonReact.
ppx_bsx depends on ppx_lib, which means that ppx_bsx doesn't support bs-platform 5.x, so first step is configuring your project to "bs-platform": "^6.0.1".
Install ppx_bsx with opam or esy, and add ppx_bsx executable to bs-config.json:
{
"ppx-flags": [
"./_opam/bin/ppx_bsx",
"./node_modules/bs-platform/lib/bsppx.exe -bs-jsx 3"
]
}Replace ./_opam/bin/ppx_bsx to actual ppx_bsx installed path.
Example: https://github.com/cxa/ppx_bsx_example.
This is how it feel:
[%bsx "
<Container>
<h1>Nice example</h1>
<nav className="(styles "sidebar")">
This is sidebar
</nav>
<div className="(styles "content")">
"(React.string {j|这是主内容|j})"
</div>
</Container>
"]- Break
[%bsx ""]intoand ignore the first and last quotation marks.[%bsx " "]
- When you need OCaml expression, wrap it with double quotation marks, otherwise
- For string literal value, just use single quotation marks
- For single text node, you don't need to wrap it to
ReasonReact.string, (surprisedly)<span>Hello, World</span>is accepted - Single text
{|你好|}(but notexpr {|你好|}) will be transformed to{j|你好|j}automatically