From e337bc86c32e72986a4fc782e0121256228ce8d2 Mon Sep 17 00:00:00 2001 From: 3846masa <3846masahiro+git@gmail.com> Date: Fri, 10 Jun 2022 12:20:50 +0900 Subject: [PATCH] make createRoot / hydrateRoot compatible with React spec --- compat/client.js | 16 +++++++++++----- compat/client.mjs | 10 +++++++--- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/compat/client.js b/compat/client.js index 5573d06879..4d19bb7f93 100644 --- a/compat/client.js +++ b/compat/client.js @@ -1,13 +1,19 @@ -const { render, hydrate } = require('preact/compat'); +const { render, hydrate, unmountComponentAtNode } = require('preact/compat'); -exports.createRoot = function(container) { +function createRoot(container) { return { render(children) { - return render(children, container); + render(children, container); + }, + unmount() { + unmountComponentAtNode(container); } }; -}; +} + +exports.createRoot = createRoot; exports.hydrateRoot = function(container, children) { - return hydrate(children, container); + hydrate(children, container); + return createRoot(container); }; diff --git a/compat/client.mjs b/compat/client.mjs index 2bd06b693f..7f89f74710 100644 --- a/compat/client.mjs +++ b/compat/client.mjs @@ -1,13 +1,17 @@ -import { render, hydrate } from 'preact/compat' +import { render, hydrate, unmountComponentAtNode } from 'preact/compat' export function createRoot(container) { return { render(children) { - return render(children, container) + render(children, container) + }, + unmount() { + unmountComponentAtNode(container) } } } export function hydrateRoot(container, children) { - return hydrate(children, container); + hydrate(children, container) + return createRoot(container) }