Skip to content

Commit 9b0fe1b

Browse files
committed
fix key type for ReactDOM jsx runtime
1 parent 10f6400 commit 9b0fe1b

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

src/ReactDOM.bs.js

Lines changed: 20 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ReactDOM.res

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,17 +1109,29 @@ external createDOMElementVariadic: (
11091109
external someElement: React.element => option<React.element> = "%identity"
11101110

11111111
@module("react/jsx-runtime")
1112-
external jsxKeyed: (string, JsxDOM.domProps, string) => Jsx.element = "jsx"
1112+
external jsxNotKeyed: (string, JsxDOM.domProps) => Jsx.element = "jsx"
11131113

11141114
@module("react/jsx-runtime")
1115-
external jsx: (string, JsxDOM.domProps) => Jsx.element = "jsx"
1115+
external jsxKeyed: (string, JsxDOM.domProps, string) => Jsx.element = "jsx"
1116+
1117+
let jsx = (~key=?, element, props) =>
1118+
switch key {
1119+
| Some(key) => jsxKeyed(element, props, key)
1120+
| None => jsxNotKeyed(element, props)
1121+
}
11161122

11171123
@module("react/jsx-runtime")
1118-
external jsxs: (string, JsxDOM.domProps) => Jsx.element = "jsxs"
1124+
external jsxsNotKeyed: (string, JsxDOM.domProps) => Jsx.element = "jsxs"
11191125

11201126
@module("react/jsx-runtime")
11211127
external jsxsKeyed: (string, JsxDOM.domProps, string) => Jsx.element = "jsxs"
11221128

1129+
let jsxs = (~key=?, element, props) =>
1130+
switch key {
1131+
| Some(key) => jsxsKeyed(element, props, key)
1132+
| None => jsxsNotKeyed(element, props)
1133+
}
1134+
11231135
// Currently, not used by JSX ppx
11241136
@deprecated("Please use ReactDOM.createElement instead.")
11251137
external stringToComponent: string => React.component<'a> = "%identity"

0 commit comments

Comments
 (0)