React에서 상위 구성 요소의 하위 구성 요소 입력에 초점을 맞추는 방법

8293 단어
이전 기사에서 call a child component function from a parent component 방법에 대해 논의했습니다. 이 글에서는 부모 컴포넌트의 버튼을 클릭했을 때 자식 컴포넌트에 있는 입력에 포커스를 맞추는 방법을 알아보겠습니다.

프로젝트 설정



다음 명령을 실행하여 반응 프로젝트를 생성합니다.

npx create-react-app react-focus-child


다음 스타일로 index.css를 업데이트합니다.

body {
  margin: 1rem auto;
  display: flex;
  justify-content: center;
  max-width: 800px;
}

.App {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

button {
  margin-bottom: 1rem;
}


자식 구성 요소 만들기



이제 입력 상자가 있는 하위 구성 요소를 만듭니다.

import React from "react"

const ChildComp = () => {
  return (
    <div>
      <input />
    </div>
  )
}

export default ChildComp


ref를 생성하고 자식에게 전달하기



하위 입력 상자를 참조하기 위해 useRef hook을 사용할 것입니다.
이제 상위 구성 요소에서 참조를 생성해 보겠습니다.

import { useRef } from "react"
import ChildComp from "./ChildComp"

function App() {
  const childInputRef = useRef(null)

  return (
    <div className="App">
      <ChildComp childInputRef={childInputRef} />
    </div>
  )
}

export default App


하위 구성 요소에서 전달된 prop을 수신하고 입력 요소로 설정해야 합니다.

import React from "react"

const ChildComp = ({ childInputRef }) => {
  return (
    <div>
      <input ref={childInputRef} />
    </div>
  )
}

export default ChildComp


하위 입력에 초점 맞추기



이제 부모 구성 요소에서 버튼을 만들고 onClick 처리기를 추가하고 입력에 초점을 맞추겠습니다.

import { useRef } from "react"
import ChildComp from "./ChildComp"

function App() {
  const childInputRef = useRef(null)

  const focusChild = () => {
    childInputRef.current && childInputRef.current.focus()
  }
  return (
    <div className="App">
      <button onClick={focusChild}>Focus child</button>
      <ChildComp childInputRef={childInputRef} />
    </div>
  )
}

export default App


이제 응용 프로그램을 테스트하면 상위 구성 요소의 버튼을 클릭할 때 입력에 포커스가 있는 것을 볼 수 있습니다.

소스 코드 및 데모



소스 코드here를 다운로드하고 데모here를 볼 수 있습니다.

좋은 웹페이지 즐겨찾기