Skip to content

Commit ad0e235

Browse files
committed
React instead of ReactDOM for fragment
1 parent 444fd4d commit ad0e235

File tree

4 files changed

+13
-8
lines changed

4 files changed

+13
-8
lines changed

jscomp/syntax/src/reactjs_jsx_v4.ml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1358,6 +1358,7 @@ let expr ~config mapper expression =
13581358
in
13591359
let childrenExpr = transformChildrenIfList ~mapper listItems in
13601360
let recordOfChildren children =
1361+
(* FIXME: missing loc *)
13611362
Exp.record [(Location.mknoloc (Lident "children"), children)] None
13621363
in
13631364
let args =
@@ -1390,7 +1391,11 @@ let expr ~config mapper expression =
13901391
Exp.ident ~loc {loc; txt = Ldot (Lident "React", "jsxs")}
13911392
else Exp.ident ~loc {loc; txt = Ldot (Lident "React", "jsx")}
13921393
| "classic" | _ ->
1393-
Exp.ident ~loc {loc; txt = Ldot (Lident "ReactDOM", "createElement")})
1394+
if countOfChildren childrenExpr > 1 then
1395+
Exp.ident ~loc
1396+
{loc; txt = Ldot (Lident "React", "createElementVariadic")}
1397+
else
1398+
Exp.ident ~loc {loc; txt = Ldot (Lident "React", "createElement")})
13941399
args)
13951400
(* Delegate to the default mapper, a deep identity traversal *)
13961401
| e -> default_mapper.expr mapper e

jscomp/syntax/tests/ppx/react/expected/fragment.res.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
@@jsxConfig({version: 4, mode: "classic"})
22

3-
let _ = ReactDOM.createElement(React.fragment, [])
4-
let _ = ReactDOM.createElement(React.fragment, [ReactDOM.createDOMElementVariadic("div", [])])
5-
let _ = ReactDOM.createElement(
3+
let _ = React.createElement(React.fragment, [])
4+
let _ = React.createElement(React.fragment, [ReactDOM.createDOMElementVariadic("div", [])])
5+
let _ = React.createElementVariadic(
66
React.fragment,
77
[ReactDOM.createDOMElementVariadic("div", []), ReactDOM.createDOMElementVariadic("div", [])],
88
)
9-
let _ = ReactDOM.createElement(React.fragment, [ReactDOM.createElement(React.fragment, [])])
9+
let _ = React.createElement(React.fragment, [React.createElement(React.fragment, [])])
1010
let _ = React.createElement(Z.make, {})
1111
let _ = React.createElement(Z.make, {children: ReactDOM.createDOMElementVariadic("div", [])})
1212
let _ = React.createElementVariadic(

jscomp/syntax/tests/ppx/react/expected/noPropsWithKey.res.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ module V4C = {
2222
type props = {}
2323

2424
let make = (_: props) =>
25-
ReactDOM.createElement(
25+
React.createElementVariadic(
2626
React.fragment,
2727
[
2828
JsxPPXReactSupport.createElementWithKey(~key="k", V4CA.make, {}),

jscomp/syntax/tests/ppx/react/expected/removedKeyProp.res.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ module Foo = {
1414
module HasChildren = {
1515
type props<'children> = {children: 'children}
1616

17-
let make = ({children, _}: props<_>) => ReactDOM.createElement(React.fragment, [children])
17+
let make = ({children, _}: props<_>) => React.createElement(React.fragment, [children])
1818
let make = {
1919
let \"RemovedKeyProp$HasChildren" = (props: props<_>) => make(props)
2020

@@ -24,7 +24,7 @@ module HasChildren = {
2424
type props = {}
2525

2626
let make = (_: props) =>
27-
ReactDOM.createElement(
27+
React.createElementVariadic(
2828
React.fragment,
2929
[
3030
JsxPPXReactSupport.createElementWithKey(~key="k", Foo.make, {x: "x", y: "y"}),

0 commit comments

Comments
 (0)