反応基礎クラス2週目-1
22年4月3日
[スパルタコードクラブ]反応ベースクラス-2週目
ダミードーム
DOM:html単位ごとにオブジェクトとして扱われるモデル
サブノードを持つツリー構造.
仮想DOM:メモリ内で回転する偽DOM
仮想DOMの動作:
既存のDOMとある行動後に新しく描かれたDOM(仮想ドームに登ったと形容)を比較し、本当に変わった部分だけを取り替えます!
DOMの再描画: 初回登録時は デック変更時
ライフサイクル:エレメントがレンダリングの準備をしている時点から、ページから消えるまで(正式な書類)
要素が作成され、→修正(更新)、および→消去される. 作成:第1ステップマウント構成部品 修正:特定の状況で更新 支柱交換時 州交換時 親コンポーネントの更新時、 が強制的に更新された場合(forceUpdate()によって構成部品を強制的に更新できます). 削除:ステップ でページを移動したり、ユーザの動作(削除ボタンをクリックするなど)によって素子を画面から消去したりする.
コンポーネント:Reactがレゴの場合、コンポーネントはブロックのような友达です.
State:コンポーネントが所有するデータ
->コンポーネントで変更可能
Props:親コンポーネント(親コンポーネント)から受信したデータ
->このコンポーネントは変更不可
Class Component
関数型構成部品//応答式マニュアルでより多くの関数型構成部品を推奨
->ライフサイクル関数 の代わりに応答ホストを使用する
[スパルタコードクラブ]反応ベースクラス-2週目
◇ライフサイクル
ダミードーム
DOM:html単位ごとにオブジェクトとして扱われるモデル
サブノードを持つツリー構造.
仮想DOM:メモリ内で回転する偽DOM
仮想DOMの動作:
既存のDOMとある行動後に新しく描かれたDOM(仮想ドームに登ったと形容)を比較し、本当に変わった部分だけを取り替えます!
DOMの再描画:
ライフサイクル:エレメントがレンダリングの準備をしている時点から、ページから消えるまで(正式な書類)
◇クラスコンポーネントに表示されるライフサイクル
import React from "react";
// 클래스형 컴포넌트는 이렇게 생겼습니다!
class LifecycleEx extends React.Component {
// 생성자 함수
constructor(props) {
super(props);
this.state = {
cat_name: '나비',
};
console.log('in constructor!'); // class LifecycleEx 생성시 인쇄
}
changeCatName = () => {
//state 업데이트 하는 방법
this.setState({cat_name: '바둑이'});
console.log('고양이 이름을 바꾼다!');
}
// 첫번째 렌더링을 마친 후에만 딱 한 번 실행
// 보통은 이 안에서 ajax 요청, 이벤트 등록, 함수 호출 등 작업을 처리
// 이미 가상돔이 실제돔으로 올라간 후니까 DOM 관련 처리를 해도 됨
componentDidMount(){
console.log('in componentDidMount!');
}
// 리렌더링을 완료한 후 실행되는 함수
// prevProps, prevState : 업데이트가 되기 전의 props, state
// 이미 가상돔이 실제돔으로 올라간 후니까 DOM 관련 처리를 해도 됨
componentDidUpdate(prevProps, prevState){
console.log(prevProps, prevState);
console.log('in componentDidUpdate!');
}
// componenet 가 없어질 때 실행되는 함수
componentWillUnmount(){
console.log('in componentWillUnmount!');
}
// 랜더 함수 안에 리액트 엘리먼트를 넣어준다.
// 컴포넌트의 모양을 정의함
// render 에서는 state나, props를 건드려 데이터를 수정하려고 하면 안됨.
render() {
console.log('in render!');
return (
<div>
{/* render 안에서 컴포넌트의 데이터 state를 참조할 수 있습니다. */}
<h1>제 고양이 이름은 {this.state.cat_name}입니다.</h1>
{/* 버튼 클릭시 고양이 이름이 바둑이로 바뀜 */}
<button onClick={this.changeCatName}>고양이 이름 바꾸기</button>
</div>
);
}
}
export default LifecycleEx;
◎ Component
コンポーネント:Reactがレゴの場合、コンポーネントはブロックのような友达です.
State:コンポーネントが所有するデータ
->コンポーネントで変更可能
Props:親コンポーネント(親コンポーネント)から受信したデータ
->このコンポーネントは変更不可
Class Component
import React from 'react';
import logo from './logo.svg';
import './App.css';
// BucketList 컴포넌트를 import 해옵니다.
import BucketList from './BucketList';
class App extends React.Component {
constructor(props){
super(props);
// App 컴포넌트의 state를 정의해줍니다.
this.state = {
list: ['영화관 가기', '매일 책읽기', '수영 배우기'],
};
}
// 랜더 함수 안에 리액트 엘리먼트를 넣어줍니다!
render() {
// this 키워드를 통해 state에 접근할 수 있어요.
console.log(this.state); // {list: ['영화관 가기', '매일 책읽기', '수영 배우기']};
return (
<div className="App">
<h1>내 버킷리스트</h1>
{/* 컴포넌트를 넣어줍니다. */}
<BucketList list={this.state.list}/>
</div>
);
}
}
export default App;
--------------------------------------------------
// 리액트 패키지를 불러옵니다.
import React from 'react';
// () 안에 props! 부모 컴포넌트에게 받아온 데이터입니다.
// js 함수가 값을 받아오는 것과 똑같이 받음.
const BucketList = (props) => {
const my_lists = props.list;
console.log(my_lists); // ['영화관 가기', '매일 책읽기', '수영 배우기']
return (
<div>
{ my_lists.map((list, index) => {
console.log(list); // '영화관 가기', '매일 책읽기', '수영 배우기' 하나씩 나옴
return (<div key={index}>{list}</div>);
})
}
</div>
);
}
// 우리가 만든 함수형 컴포넌트를 export 해줍니다.
// export 해주면 다른 컴포넌트에서 BucketList 컴포넌트를 불러다 쓸 수 있어요.
export default BucketList;
->ライフサイクル関数
import React from 'react';
import logo from './logo.svg';
import './App.css';
// BucketList 컴포넌트를 import 해옵니다.
import BucketList from './BucketList';
function App() {
return (
<div className="App">
<h1>내 버킷리스트</h1>
{/* 컴포넌트를 넣어줍니다. */}
<BucketList/>
</div>
);
}
export default App;
------------------------------------------------------------
// 리액트 패키지를 불러옵니다.
import React from 'react';
// () 안에 props! 부모 컴포넌트에게 받아온 데이터입니다.
// js 함수가 값을 받아오는 것과 똑같이 받아오네요.
const BucketList = (props) => {
console.log(props); // {list: ['영화관 가기', '매일 책읽기', '수영 배우기']};
// 컴포넌트가 뿌려줄 ui 요소(리엑트 엘리먼트라고 불러요.)를 반환해줍니다.
return (
<div>
버킷 리스트
</div>
);
}
// 우리가 만든 함수형 컴포넌트를 export 해줍니다.
// export 해주면 다른 컴포넌트에서 BucketList 컴포넌트를 불러다 쓸 수 있어요.
export default BucketList;
Reference
この問題について(反応基礎クラス2週目-1), 我々は、より多くの情報をここで見つけました https://velog.io/@gwichanlee/리액트-기초반-2주차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol