Skip to content

Commit 2f48356

Browse files
committed
add key imperatively
1 parent adc1a55 commit 2f48356

File tree

2 files changed

+12
-19
lines changed

2 files changed

+12
-19
lines changed

src/React.bs.js

Lines changed: 4 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/React.res

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,13 @@ type component<'props> = Jsx.component<'props>
1414

1515
let component = Jsx.component
1616

17-
%%private(
18-
@inline
19-
let addKeyProp = (~key: option<string>=?, p: 'props): 'props =>
20-
switch key {
21-
| Some(key) => Obj.magic(Js.Obj.assign(Obj.magic(p), {"key": key}))
22-
| None => p
23-
}
24-
)
25-
2617
@module("react")
2718
external createElement: (component<'props>, 'props) => element = "createElement"
2819

29-
let createElementWithKey = (~key=?, component, props) =>
30-
createElement(component, addKeyProp(~key?, props))
20+
let createElementWithKey = (~key=?, component, props) => {
21+
let _ = Obj.magic(props)["key"] = key
22+
createElement(component, props)
23+
}
3124

3225
@module("react")
3326
external cloneElement: (element, 'props) => element = "cloneElement"
@@ -39,8 +32,10 @@ external isValidElement: 'a => bool = "isValidElement"
3932
external createElementVariadic: (component<'props>, 'props, array<element>) => element =
4033
"createElement"
4134

42-
let createElementVariadicWithKey = (~key=?, component, props, elements) =>
43-
createElementVariadic(component, addKeyProp(~key?, props), elements)
35+
let createElementVariadicWithKey = (~key=?, component, props, elements) => {
36+
let _ = Obj.magic(props)["key"] = key
37+
createElementVariadic(component, props, elements)
38+
}
4439

4540
@module("react/jsx-runtime")
4641
external jsxNotKeyed: (component<'props>, 'props) => element = "jsx"

0 commit comments

Comments
 (0)