반응 고리로 가볍게 소개합니다.제1부
16938 단어 reactwebdevjavascriptreacthooks
내 이야기
나는 이미 React와 합작한 지 2년이 넘었다.나는 2년 동안 잘 지냈다는 것을 인정해야 한다.그래서 처음 React hooks를 들었을 때 나는 매우 의심스러웠다."왜 좋은, 효과적인 것들을 바꿔야 합니까?"내가 이 예들을 처음 보았을 때, 나의 느낌은 '이것은 좋은 방향이 아니다' 는 것이 더욱 강렬했다.그러나 후크스가 끊임없이 여러 방면에서 나를 공격하자, 점점 더 많은 사람들이 새로 가입한 React에 대해 기뻐하는 것 같다.한번 해보기로 했어요...나는 즐거운 동네에 가입했다.하지만 우선 해야 할 일은
갈고리가 뭐예요?
구성 요소의 클래스 생성 대신 갈고리를 도입했습니다.뭘로 바꿀까요?대신 함수 생성
"와!"한 사람이 큰소리로 외칠 수 있다.우리는 함수로 구성 요소를 계속 만들 수 있었다.호크의 작은 놀람은 어떻게 된 일입니까?내가 이 문제에 대답하기 전에, 우리는 두 걸음 뒤로 물러서자.
React에서 구성 요소를 어떻게 생성합니까?
일반적으로 두 가지 방법으로 부품을 판자 상자에 넣을 수 있다.
React에서 어셈블리를 생성하는 두 가지 방법이 있는 이유는 무엇입니까?
만약 기능 구성 요소가 이렇게 쿨하다면, 왜 그것들만 사용하는 것이 아니겠는가?처음에는 왜 종류를 사용했습니까?
클래스 구성 요소에는 두 가지 기능 구성 요소가 사용할 수 없는 중요한 기능이 있습니다.
예를 들어, 단추 구성 요소는 사용자가 그것을 눌렀는지 기억할 수 있다.색상에 따라 녹색 또는 빨간색으로 표시됩니다.
구성 요소의 생명주기 방법은 무엇입니까?구성 요소의 라이프 사이클은 브라우저에서 구성 요소를 처음 그릴 때까지(또는 이전 시간까지) 브라우저에서 제거됩니다.생명주기 방법은 구성 요소가 존재하는 중요한 순간에 코드를 실행할 수 있도록 합니다.
만약 우리가 단추의 높이를 알고 싶다면.이 정보는 브라우저에서 실제 단추를 보여준 후에 사용할 수 있습니다.
this
덕분에 우리는 이 단추에 접근해서 렌더링할 때 높이를 얻을 수 있다.과거에는 기능 구성 요소를 사용할 때 이런 기능을 사용할 수 없었다.그러나 React 16.8 이래로--React 갈고리의 도입 덕분에--상태와 생명주기 방법은 모두 기능 구성 요소에 사용할 수 있다!
코드 보여줘!
클래스 구성 요소를 작성하는 것부터 모험을 시작합시다.
우리는 입력 필드를 보여주는 간단한 구성 요소가 있습니다.구성 요소 상태로 저장되어 입력 필드 위에 표시되는 이름을 입력할 수 있습니다.
import React from 'react';
class MyComponent extends React.Component {
state = {
userName: "Bob",
}
handleUserNameChanged = (e) => {
this.setState({ userName: e.target.value });
}
render() {
return(
<>
<h2>User name: {this.state.userName}</h2>
<input
type="text"
value={this.state.userName}
onChange={this.handleUserNameChanged}
/>
</>
);
}
}
이제 함수 구성 요소를 만듭니다.클래스 구성 요소와 기능이 완전히 같은 구성 요소를 만드는 것이 목표입니다.빈 화살표 함수부터 시작합니다.import React from 'react';
const MyComponent = () => {
// code goes here
};
그런 다음 다음,componentDidMount
방법으로 되돌아오는 코드.그것은 우리의 함수 구성 요소에서 직접 되돌아올 것이다.render
방법과 그 앞에 handleUserNameChanged
키워드를 추가합니다.const
키워드가 없습니다.모든 내용을 삭제합니다.this
가 아니라 userName
에 관심이 있다.코드에서 모두 삭제state.userName
.우리는 state.
를 대상으로 정의하지 않는다.우리는 state
변수를 정의하고 문자열 userName
을 초기 값으로 한다. "Bob"
: setState
.입력 필드에서 얻은 값을 전달합니다.이 함수는 변수에 남아 있는 값을 변경setUserName
합니다.import React from 'react';
const MyComponent = () => {
const userName = "Bob";
const handleUserNameChanged = (e) => {
setUserName(e.target.value);
}
return(
<>
<h2>User name: {userName}</h2>
<input
type="text"
value={userName}
onChange={handleUserNameChanged}
/>
</>
);
}
이 단계에서 우리의 조립품은 작용하지 않는다.잘못된 정보를 받았습니다. userName
정의되지 않았습니다.우리 자신에게 setUserName
가 무엇인지 일깨워 줍시다.그것은 값을 바꾸는 함수일 것이다.우리는 이 함수를 위해 간단한 실현을 작성할 것이다.이 함수는 새
setUserName
값을 받아들일 것이며, 현재 userName
값을 되돌려줍니다.const setUserName = (newUserName) => userName;
이제 기능 구성 요소(4행)에 추가합니다.import React from 'react';
const MyComponent = () => {
const userName = "Bob", setUserName = (value) => userName;
const handleUserNameChanged = (e) => {
setUserName(e.target.value);
}
return(
<>
<h2>User name: {userName}</h2>
<input
type="text"
value={userName}
onChange={handleUserNameChanged}
/>
</>
);
}
우리의 코드는 거의 작동할 수 있다.입력 필드와 사용자 이름이 Bob으로 표시되기 때문입니다.하지만 우리는 이 사용자 이름을 바꿀 수 없다.왜?새 사용자 이름을 유지할 수 있는 구성 요소 상태가 없습니다.우리는 이곳에서 상태를 사용하고 싶다.다행히 리액트는 우리에게 userName
갈고리를 주었다.상태 연결 사용
userName
는 함수 구성 요소에서 사용할 수 있는 갈고리입니다.useState
hook은 두 요소를 포함하는 배열을 반환하는 함수입니다.useState
초기 상태 값을 가진 매개 변수를 전달할 수 있다.그것은 useState
, useState
, string
, number
, boolean
, array
또는 object
중 임의로 할 수 있다.우리의 예에서 우리는 string
"Bob"을 전달했다.우리는 다음과 같이 쓸 수 있다.
const state = useState("Bob"); // state is an array
const userName = state[0]; // first element is a state's value
const setUserName = state[1]; // second element is a function
어레이의 분해로 인해 우리는 이를 더욱 우아하게 쓸 수 있다.const [userName, setUserName] = useState("Bob");
우리는 이렇게 이해할 수 있다.userName
라는 변수에 저장하기를 원합니다.setUserName
함수를 사용하여 상태를 변경할 수 있다.userName
값을 "Bob"
로 설정합니다.useState
어셈블리에서 사용합니다.import React, { useState } from 'react'; // import useState hook
const MyComponent = () => {
const [userName, setUserName] = useState("Bob");
const handleUserNameChanged = (e) => {
setUserName(e.target.value);
}
return(
<>
<h2>User name: {userName}</h2>
<input
type="text"
value={userName}
onChange={handleUserNameChanged}
/>
</>
);
}
현재, 우리의 함수 구성 요소는 클래스 구성 요소와 완전히 같아야 한다.React의 useState
갈고리 덕분에 우리는 상태를 가진 함수 구성 요소를 만들었습니다!좋아, 그게 작용하고 있어. 그런데 그 기적들은 어디에 있지?
너는 갈고리를 추가해서 반응하는 것이 책상에 어떤 현저한 이익도 가져다 주지 않을 것이라고 생각할 수도 있다.사실 네가 옳다.초기 클래스 구성 요소를 대응하는 함수와 비교하면 큰 차이가 없을 것입니다.왜 이렇게 많은 사람들이 갈고리에 흥분하는지 정말 이해하기 어렵다.
나는 너에게 한 가지 일을 보증한다.만약 네가 이 시리즈의 결말까지 나와 함께 있었다면, 너는 크게 놀랐을 것이다.이거 대박이다!잠깐만요.적어도 나는 하나 있다.
부드러운 소개 부분에서 만나요!
제 계좌를 마음대로 보고 비슷한 내용을 더 많이 보십시오.
Reference
이 문제에 관하여(반응 고리로 가볍게 소개합니다.제1부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/przemwo/gently-introduction-to-react-hooks-part-1-1a47텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)