Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Commit f8e7273

Browse files
committed
add test for forwardRef
1 parent 9a275c7 commit f8e7273

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
module FancyInput = {
2+
type props<'className, 'children> = {
3+
@optional key: string,
4+
@optional className: 'className,
5+
children: 'children,
6+
@optional ref: ReactDOM.Ref.currentDomRef,
7+
}
8+
let make = ({className, children, ref}: props<'className, 'children>) => {
9+
let ref = Js.Nullable.fromOption(ref)
10+
let _ = ref
11+
12+
ReactDOMRe.createDOMElementVariadic(
13+
"div",
14+
[
15+
ReactDOMRe.createDOMElementVariadic(
16+
"input",
17+
~props=ReactDOMRe.domProps(
18+
~type_="text",
19+
~className?,
20+
~ref=?{Js.Nullable.toOption(ref)->Belt.Option.map(ReactDOM.Ref.domRef)},
21+
(),
22+
),
23+
[],
24+
),
25+
children,
26+
],
27+
)
28+
}
29+
let make = React.forwardRef({
30+
let \"ForwardRef$FancyInput" = (props: props<_>, ref) =>
31+
make({...props, ref: @optional Js.Nullable.toOption(ref)})
32+
\"ForwardRef$FancyInput"
33+
})
34+
}
35+
type props = {@optional key: string}
36+
37+
let make = (_: props) => {
38+
let input = React.useRef(Js.Nullable.null)
39+
40+
ReactDOMRe.createDOMElementVariadic(
41+
"div",
42+
[
43+
React.createElement(
44+
FancyInput.make,
45+
{ref: input, children: {React.string("Click to focus")}},
46+
),
47+
],
48+
)
49+
}
50+
let make = {
51+
let \"ForwardRef" = props => make(props)
52+
\"ForwardRef"
53+
}

tests/ppx/react/forwardRef.res

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
module FancyInput = {
2+
@react.component
3+
let make = React.forwardRef((~className=?, ~children, ref) =>
4+
<div>
5+
<input
6+
type_="text"
7+
?className
8+
ref=?{Js.Nullable.toOption(ref)->Belt.Option.map(ReactDOM.Ref.domRef)}
9+
/>
10+
children
11+
</div>
12+
)
13+
}
14+
15+
@react.component
16+
let make = () => {
17+
let input = React.useRef(Js.Nullable.null)
18+
19+
<div> <FancyInput ref=input> {React.string("Click to focus")} </FancyInput> </div>
20+
}

0 commit comments

Comments
 (0)