Skip to content

Commit 3f0f2e9

Browse files
committed
Revert "add key imperatively"
This reverts commit 2f48356.
1 parent 2f48356 commit 3f0f2e9

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

src/React.bs.js

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

src/React.res

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,20 @@ 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+
1726
@module("react")
1827
external createElement: (component<'props>, 'props) => element = "createElement"
1928

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

2532
@module("react")
2633
external cloneElement: (element, 'props) => element = "cloneElement"
@@ -32,10 +39,8 @@ external isValidElement: 'a => bool = "isValidElement"
3239
external createElementVariadic: (component<'props>, 'props, array<element>) => element =
3340
"createElement"
3441

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

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

0 commit comments

Comments
 (0)