ReScript: React 구성 요소 사용
<Button>
를 약간 조정합니다.// Button.res
@react.component
let make = (~children, ~onClick) => {
<button onClick> children </button>
}
버튼 자식을
React.string("Click me")
에서 children
로 변경하고 컴포넌트 함수에 ~children
에 대한 prop을 추가했습니다. 이렇게 하면 다른 내용으로 버튼을 재사용할 수 있습니다. children
소품의 유형은 React.element
로 유추되며 필수입니다.// App.res
@react.component
let make = () => {
<div> <Button /> </div>
}
여기서 우리는
<Button>
라는 다른 구성 요소 내부의 <App>
구성 요소를 사용합니다. 지난 게시물에서 보았듯이 모든 파일은 모듈이며 ReScript에서 전역적으로 사용할 수 있습니다. 따라서 미리 파일을 가져올 필요 없이 JSX에 <Button>
를 추가할 수 있습니다.지금 저장하면 컴파일러에서
<Button>
에 대한 필수 속성이 누락되었다는 오류가 발생합니다. 1 │ @react.component
2 │ let make = () => {
3 │ <div> <Button /> </div>
4 │ }
This has type:
(~children: 'a, ~onClick: 'b) => {"children": 'a, "onClick": 'b}
Somewhere wanted:
{"children": React.element, "onClick": ReactEvent.Mouse.t => unit}
컴파일러를 만족시키기 위해 props를 추가해 봅시다.
@react.component
let make = () => {
<div>
<Button onClick={_event => ()}> {React.string("Click me")} </Button>
</div>
}
onClick
는 _event => ()
로 정의된 함수를 가져옵니다. event
앞의 밑줄은 변수가 사용되지 않았음을 컴파일러에 알리고 JavaScript의 ()
로 컴파일되는 unit , undefined
를 반환합니다.마지막으로 이전의 버튼 텍스트를 자식으로
<Button>
에 다시 추가하고 <Button>
구성 요소를 성공적으로 사용했습니다!
Reference
이 문제에 관하여(ReScript: React 구성 요소 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/believer/rescript-using-react-components-58mm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)