From 106109790ce3ad34b535d0b10faf2c9745a08479 Mon Sep 17 00:00:00 2001 From: Christoph Knittel Date: Tue, 2 May 2023 11:20:47 +0200 Subject: [PATCH] Add React.lazy --- src/React.bs.js | 13 ++++++++++++- src/React.res | 7 +++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/React.bs.js b/src/React.bs.js index 0ce5c58..eb0afaf 100644 --- a/src/React.bs.js +++ b/src/React.bs.js @@ -1,6 +1,8 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Curry = require("rescript/lib/js/curry.js"); +var React = require("react"); var Ref = {}; @@ -20,6 +22,14 @@ var Experimental = { SuspenseList: SuspenseList }; +function lazy_(load) { + return React.lazy(async function (param) { + return { + default: await Curry._1(load, undefined) + }; + }); +} + var Uncurried = {}; exports.Ref = Ref; @@ -29,5 +39,6 @@ exports.Fragment = Fragment; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.Experimental = Experimental; +exports.lazy_ = lazy_; exports.Uncurried = Uncurried; -/* No side effect */ +/* react Not a pure module */ diff --git a/src/React.res b/src/React.res index 9903177..cf4a7f5 100644 --- a/src/React.res +++ b/src/React.res @@ -143,6 +143,13 @@ module Experimental = { } } +type dynamicallyImportedModule<'a> = {default: component<'a>} + +@module("react") +external lazy_: (unit => promise>) => component<'a> = "lazy" + +let lazy_ = load => lazy_(async () => {default: await load()}) + /* HOOKS */ /*