이전 클래스 구성 요소를 함수로 변환합니다.이렇게 하자!
6412 단어 reactjavascript
문제는 면접에서 갈고리를 사용하길 바란다는 것이다.만약 네가 한 과목을 사용한다면, 너는 가장 어려운 면접 문제를 만날 것이다."왜 그랬어요?"😨...😰...😢
다행히도 한 번의 ahem 학습 경험이 결국 나로 하여금 학습이 연결될 때가 왔다고 확신하게 한 후에 나는 그것들이 사실 결코 나쁘지 않다는 것을 발견했다. 적어도 가장 간단한 실현에서 이렇다.
두 개의'주요적'연결이 있는데 이것이 바로 내가 처음에 관심을 가지던 것이다.
useState
과useEffect
.다음은 클래스와 갈고리를 사용해서 이 두 가지를 어떻게 사용하는지 보여 주는 스타일 없는 디지털 시계 구성 요소를 만들 것입니다.마지막으로, 나는 병렬 비교를 할 것이다.등급
시작하기 전에 구성 요소를 설정해야 합니다.먼저 React와 해당 어셈블리 클래스를 가져온 다음 상속된 시계 어셈블리를 생성합니다.
import React, {Component} from 'react';
export default class Clock extends Component {};
그럼 우리 나라를 세우는 것부터 시작합시다.현재 날짜/시간을 나타내는 날짜 대상을 만들고 키currentTime
를 사용하여 구성 요소의 상태로 설정해야 합니다. state = {
currentTime: new Date
};
그런 다음 render 함수를 호출하여 DOM에 값을 표시할 수 있습니다.시간 문자열로 변환하려면 toLocaleTimeString()
를 사용합니다.import React, {Component} from 'react';
export default class Clock extends Component {
state = {
currentTime: new Date
};
render() {
return(
<h2>{this.state.currentTime.toLocaleTimeString()}</h2>
);
};
};
이것은 페이지에 시간을 표시합니다.그러나 그것을 시계로 만들려면 시간의 흐름에 따라 1초라도 똑딱똑딱 해야 한다.우리는 우선 tick()
함수를 정의하여 상태를 새로운 시간으로 설정합니다.그리고 우리는 1초의 간격을 설정해서 1초에 한 번씩 똑딱거리는 함수를 호출하려고 한다.간격에 대해 구성 요소가 설치되기를 기다린 다음 간격 타이머를 시작해야 합니다.구성 요소가 설치된 경우componentDidMount
라이프 사이클 방법을 사용합니다.마지막으로, 만약 시계 구성 요소가 마운트 해제된다면, 우리는 간격을 멈추기를 희망합니다. 이렇게 하면 컴퓨터가 이유 없이 계속 계수를 하지 않을 것입니다."구성 요소 마운트 해제 후"작업을 완성하기 위해서, 우리는 componentWillUnmount
을 사용합니다. 이것은 구성 요소가 소각되기 전에 실행됩니다.import React, {Component} from 'react';
export default class Clock extends Component {
state = {
currentTime: new Date
};
tick() {
this.setState({currentTime: new Date});
};
componentDidMount() {
this.int = setInterval(() => this.tick(), 1000);
};
componentWillUnmount() {
clearInterval(this.int);
};
render() {
return(
<h2>{this.state.currentTime.toLocaleTimeString()}</h2>
);
};
};
지금 우리는 똑딱거리는 시계가 하나 생겼다!갈고리
이제 갈고리를 이용해서 똑같은 일을 하는 법을 봅시다.마찬가지로 구성 요소 설정부터 시작해야 합니다.우리는 지금 export 문장을 끝까지 옮겨야 한다는 것을 주의하십시오.
import React, {useState, useEffect} from 'react';
const Clock = () => {};
export default Clock;
그리고 우리는 다시 같은 키와 값을 사용하여 우리의 상태를 설정할 것이다.여기서 우리는 두 개의 독립된 변수를 동시에 정의한다.currentTime
는 우리의 열쇠이다setCurrentTime
는 교실에서 호출하는 것과 같다this.setState()
.마지막으로 호출useState
은 실제 호출setCurrentTime
이기 때문에 초기 상태를 설정하기 위해 매개 변수를 전달해야 한다. 이 예는 날짜 대상이다.const [currentTime, setCurrentTime] = useState(new Date);
우리가 보여준 내용은 변하지 않을 것입니다. 그러나 클래스 구성 요소가 아니라 함수 구성 요소를 사용하기 때문에 JSX로 돌아가기만 하면 됩니다. render()
함수를 사용할 필요가 없습니다.import React, {useState, useEffect} from 'react';
const Clock = () => {
const [currentTime, setCurrentTime] = useState(new Date);
return(
<h2>{this.state.currentTime.toLocaleTimeString()}</h2>
);
};
export default Clock;
시계가 똑딱똑딱 소리를 낼 때가 되었다.우리는 tick()
함수를 다시 정의할 것입니다. 이 함수는 상태를 새로운 시간으로 설정합니다.우리는 일반 함수 (실례적인 방법은 클래스가 없음) 를 정의함으로써 이 점을 실현한다. 이것은 우리의 새로운 setCurrentTime
함수 변수를 사용하여 상태를 바꾼다.흥미로운 것은 종류가 없으면 생명주기 방법이 없기 때문에 우리는 사용해야 한다useEffect()
.이 함수는 실제로componentDidMount
와 componentWillUnmount
방법을 포함한다.우리는 여전히 간격을 정의하고 리셋을 tick()
로 설정해야 하지만, 지금은 useEffect
함수를 다른 함수로 되돌려 줍니다.이 되돌아오는 함수 대표 componentWillUnmount
는 구성 요소가 삭제된 후에 시작되는 모든 서비스를 정리하는 데 사용됩니다.import React, {useState, useEffect} from 'react';
const Clock = () => {
const [currentTime, setCurrentTime] = useState(new Date);
function tick() {
setCurrentTime(new Date);
};
useEffect(() => {
let int = setInterval(() => tick(), 1000);
return cleanup => {
clearInterval(int);
};
});
return(
<h2>{currentTime.toLocaleTimeString()}</h2>
);
};
export default Clock;
마지막으로 우리는 함수를 화살표 함수로 한층 더 변환할 수 있다.아래 내용을 나란히 보고 재구성된 구성 요소를 보세요.비교
갈고리
등급
기능적인 방식이 더 간결해 보이지 않습니까?그럼 너는...갈고리를 사용하기 시작할 거라고 확신하십니까? 아니면 저처럼 열심히 공부해야 합니까?
규칙을 정의하는 것을 좋아하기 때문에 목록에 따라 조작할 수 있습니다. 다음은 클래스를 함수로 변환하는 목록입니다.
import React, {Component} from 'react'
import React, {useState, useEffect} from 'react'
export default class Clock extends Component {}
const Clock = () => {
& 내보내기를 파일state = {currentTime: new Date};
const [currentTime, setCurrentTime] = useState(new Date);
this.state.
this.setState()
를 useState
에 정의된 새로운 함수로 변경tick() {}
/this.int =
function tick() {};
/int =
tick = () => {}
로 변환useEffect()
로 변경componentDidMount() {};
/componentWillUnmount() {}
useEffect()
, 정리 함수 되돌리기Reference
이 문제에 관하여(이전 클래스 구성 요소를 함수로 변환합니다.이렇게 하자!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dhintz89/convert-your-old-class-components-to-functions-just-do-it-already-44e1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)