Component
A component is ('props) => React.element
or React.component<'props>
Component definition in RescriptReact
type componentLike<'props, 'return> = 'props => 'return
type component<'props> = componentLike<'props, element>
JSX component interface
- A component is a module with:
make : props => React.element
makeProps: 'a => props
module Movie = {
type props = {"title": string, "desc": string}
@obj
external makeProps: (~title: string, ~desc: string, ~children: React.element=?, unit) => props
= ""
let make = (props: props) => {
<div>
<h1> {props["title"]->React.string} </h1>
<p> {props["desc"]->React.string} </p>
</div>
}
}
@react.component
let make = () => {
<div>
<Movie title="Dark" desc="The best sifi movie." />
</div>
}
@react.component
Decorator
@react.component
decorator helps to create component more easily
module Movie = {
@react.component
let make = (~title: string, ~desc: string) => {
<div>
<h1> {title->React.string} </h1>
<p> {desc->React.string} </p>
</div>
}
}
@react.component
let make = () => {
<div>
<Movie title="Looper" desc="The best sifi movie." />
</div>
}
No need to write let make = (~title: string, ~desc: string, unit)
cause @react.component
helps to add it.