ReactDOM
ReasonReact's ReactDOM module is called ReactDOM. The module exposes helpers that work with familiar ReactJS idioms:
ReactDOM.querySelector:string => option(Dom.element)ReactDOM.Client.createRoot:Dom.element => Client.rootReactDOM.Client.render:(Client.root, React.element) => unitReactDOM.Client.hydrateRoot:(Dom.element, React.element) => Client.rootReactDOM.createPortal:(React.element, Dom.element) => React.elementReactDOM.unmountComponentAtNode:Dom.element => unit
More info about ReactDOM module can be found in the interface file: ReactDOM.rei or in the official react-dom documentation.
Usage
In React 18, the ReactDOM.render function is replaced by ReactDOM.Client.render.
let element = ReactDOM.querySelector("#root");
switch (element) {
| None => Js.log("#root element not found");
| Some(element) => {
let root = ReactDOM.Client.createRoot(element);
ReactDOM.Client.render(<Greeting name="John" />, root);
}
}
Hydration
Hydration is the process of converting a static HTML page into a dynamic React app.
let element = ReactDOM.querySelector("#root");
switch (element) {
| None => Js.log("#root element not found");
| Some(element) => {
/* root is a ReactDOM.Client.root and used to render on top of the existing HTML
with ReactDOM.Client.render or unmount, via ReactDOM.Client.unmount. */
let _root = ReactDOM.Client.hydrateRoot(<Greeting name="John" />, element);
();
}
}
ReactDOMServer
ReasonReact's equivalent of ReactDOMServer from react-dom/server exposes
renderToString:React.element => stringrenderToStaticMarkup:React.element => string
More info about ReactDOMServer can be found in the official React documentation.