ReScript: React 구성 요소 사용

5547 단어 reactrescript
에서 ReScript에서 React 구성 요소를 만드는 방법을 배웠습니다. 이 포스트에서는 다른 컴포넌트에서 import하고 사용하는 방법을 배울 것입니다. 먼저 생성한 <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> 구성 요소를 성공적으로 사용했습니다!

좋은 웹페이지 즐겨찾기