> 웹 프론트엔드 > 프런트엔드 Q&A > 반응에서 초점을 설정하는 방법

반응에서 초점을 설정하는 방법

藏色散人
풀어 주다: 2022-12-27 11:18:38
원래의
2264명이 탐색했습니다.

반응에서 포커스를 설정하는 방법: 1. componentDidMount에서 DOM 요소를 사용합니다. 2. "this.input.focus()"의 DOM API를 호출하여 페이지가 로드된 후 입력 상자에 자동으로 포커스를 맞추는 기능을 구현합니다.

반응에서 초점을 설정하는 방법

이 튜토리얼의 운영 환경: Windows 10 시스템, 반응 버전 18.0.0, Dell G3 컴퓨터.

반응에서 초점을 설정하는 방법은 무엇입니까?

React는 페이지에 진입한 후 자동으로 입력 상자에 초점을 맞춥니다.

반응에서 초점을 설정하는 방법

React.js에서는 기본적으로 DOM을 직접 다룰 필요가 없습니다. React.js는 이벤트 모니터링에 도움이 되는 일련의 on* 메소드를 제공하므로 과거에는 React.js에서 addEventListener의 DOM API를 직접 호출할 필요가 없었습니다. 수동 DOM 작업을 통해 페이지를 업데이트했습니다. jQuery의 도움으로), React에서는 setState를 통해 구성 요소를 직접 다시 렌더링할 수 있습니다. 렌더링 시 새 소품을 하위 구성 요소에 전달하여 페이지 업데이트 효과를 얻을 수 있습니다.

React.js의 재렌더링 메커니즘은 대부분의 DOM 업데이트 작업을 방지하는 데 도움이 되며 개발 도구 체인에서 DOM 작업을 주로 캡슐화하는 jQuery와 같은 타사 라이브러리도 제거합니다.

하지만 React.js는 모든 DOM 작업 요구 사항을 완전히 충족할 수 없습니다. 때로는 여전히 DOM을 처리해야 합니다. 예를 들어, 페이지 진입 후 입력 상자에 자동으로 초점을 맞추려면 input.focus()의 DOM API를 호출해야 합니다. 예를 들어 후속 애니메이션에 대한 DOM 요소의 크기를 동적으로 가져오려는 경우입니다. , 등.

React.js는 마운트된 요소의 DOM 노드를 가져오는 데 도움이 되는 ref 속성을 제공합니다. JSX 요소에 ref 속성을 추가할 수 있습니다.

input 요소에 ref 속성을 추가한 것을 볼 수 있으며, 이 속성의 값은 함수입니다. 입력 요소가 페이지에 마운트되면 React.js는 이 함수를 호출하고 마운트된 DOM 노드를 이 함수에 전달합니다. 함수에서 이 DOM 요소를 구성 요소 인스턴스의 속성으로 설정하므로 나중에 this.input을 통해 이 DOM 요소를 가져올 수 있습니다.

그런 다음 이 DOM 요소를 componentDidMount에서 사용하고 this.input.focus()의 DOM API를 호출할 수 있습니다. 전반적으로 페이지가 로드된 후 입력 상자에 자동으로 초점을 맞추는 기능을 달성합니다(구성 요소 수명 주기인 componentDidMount를 사용하는 것을 볼 수 있습니다).

HTML 요소 태그에 ref를 추가하여 DOM 요소를 가져온 다음 DOM API를 호출할 수 있습니다. 하지만 한 가지 원칙을 기억하세요. 가능하다면 ref를 사용하지 마세요. 특히, React.js가 도움을 줄 수 있는 자동 페이지 업데이트 작업 및 이벤트 모니터링을 수행하기 위해 ref를 사용하지 마세요. 중복된 DOM 작업은 실제로 코드의 "노이즈"이며, 이는 우리의 이해와 유지 관리에 도움이 되지 않습니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React 进入页面以后自动 focus 到某个输入框</title>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
class AutoFocusInput extends React.Component {
  componentDidMount () {
    this.input.focus()
  }
 
  render () {
    return (
      <input ref={(input) => this.input = input} />
    )
  }
}
ReactDOM.render(
  <AutoFocusInput />,
  document.getElementById(&#39;root&#39;)
);
</script>
</body>
</html>
로그인 후 복사

또 다른 작성 방법:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React 进入页面以后自动 focus 到某个输入框</title>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
class MyComponent extends React.Component {
  constructor(props) {
    super(props);
 
    this.inputRef = React.createRef();
  }
 
  render() {
    return <input type="text" ref={this.inputRef} />;
  }
 
  componentDidMount() {
    this.inputRef.current.focus();
  }
}
 
 
ReactDOM.render(
  <MyComponent />,
  document.getElementById(&#39;root&#39;)
);
</script>
</body>
</html>
로그인 후 복사

추천 학습: "react 비디오 튜토리얼"

위 내용은 반응에서 초점을 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿