[リトラクト処理の技術]Chapter 03:構成部品
構成部品
構成部品を宣言する方法は2つあります.
クラス構成部品
import React from 'react';
import './App.css';
class App extends Componet {
reder(){
const name = 'react';
return <div className="react">{name}</div>
}
}
export default App;
では、何を書きますか。
より良い関数形式=宣言しやすく、Hooks機能で既存の問題を解決
エクスポートモジュール=export
他のファイルからファイルをインポートできます
読み込みモジュール=import
他のファイルのインポート
Props
構成部品のプロパティを設定するときに使用する要素
props値は親コンポーネントによって設定されます(操作).
JSXでpropsをレンダリングする
MyComponent.jsimport React from 'react';
const MyComponet = props => {
return <div> 안녕하세요, 제이름은 {props.name} 입니다. </div>
};
exprot defalt MyComponent;
(子)構成部品でpropsをnameに設定するには
{props.name}と呼ぶことができます.
propsを指定する方法はいろいろあります
多くの場合、非構造的な割り当てを学習します.これは後で処理します.
非構造割当
構成部品の使用時にprops値を指定する
App.jsimport React from 'react';
import MyComponet from './MyComponent'
const App = () => {
return <MyComponet name = "React" />;
};
exprot defalt App;
では、(親)構成部品がprops値をname=「値」に指定した場合.
部品の支柱.nameの値決定
propsデフォルト:defaultProps
import React from 'react';
const MyComponet = props => {
return <div> 안녕하세요, 제이름은 {props.name} 입니다. </div>
};
MyComponet.defaultProps = {
name : '기본이름'
};
exprot defalt MyComponent
サブアセンブリ
構成部品名.defaultProps={porpsのProperty:[デフォルト]};
君が望むなら
既定値は.
タグ間のコンテンツの子を表示
(子)構成部品で{props.children}を実行すると、
親ラベル間の内容を表す
非構造化割り当て構文によるprops内部値の抽出
非構造化配分とは?
オブジェクトから値を抽出する構文const ironMan = {
name: '토니 스타크',
actor: '로버트 다우니 주니어',
alias: '아이언맨'
};
const captainAmerica = {
name: '스티븐 로저스',
actor: '크리스 에반스',
alias: '캡틴 아메리카'
};
function print(hero) {
const text = `${hero.alias}(${hero.name}) 역할을 맡은 배우는 ${
hero.actor
} 입니다.`;
console.log(text);
}
print(ironMan);
print(captainAmerica);
上記の例では、値にアクセスすると、ヒーロー~~を続行します.やっかいなことがあるconst ironMan = {
name: '토니 스타크',
actor: '로버트 다우니 주니어',
alias: '아이언맨'
};
const captainAmerica = {
name: '스티븐 로저스',
actor: '크리스 에반스',
alias: '캡틴 아메리카'
};
// ------ 방법 1 ------ //
function print(hero) {
const { alias, name, actor } = hero;
const text = `${alias}(${name}) 역할을 맡은 배우는 ${actor} 입니다.`;
console.log(text);
}
// ------ 방법 2 ------ //
function print({ alias, name, actor }) {
const text = `${alias}(${name}) 역할을 맡은 배우는 ${actor} 입니다.`;
console.log(text);
}
print(ironMan);
print(captainAmerica);
こう改めれば簡単だ
すなわちconst { alias, name, actor } = hero;
このセクションでは、オブジェクトの値を抽出し、新しい定数に挿入します.
非構造配分法を使用すると、非常にきれいに使用されます.
MyComponent.js(非構造化生糖法)import React from 'react';
const MyComponet = ({name}) => {
return <div> 안녕하세요, 제이름은 {name} 입니다. </div>
};
MyComponet.defaultProps = {
name : '기본이름'
};
exprot defalt MyComponent
proptypeでpropsを検証する
構成部品に必要なpropsを指定するか、タイプを指定します.import React from 'react';
import PropTypes from 'prop-types';
const MyComponet = ({name}) => {
return <div> 안녕하세요, 제이름은 {name} 입니다. </div>
};
MyComponet.defaultProps = {
name : '기본이름'
};
MyComponet.propsTypes = {
name : PropsTypes.strting
};
exprot defalt MyComponent
import React from 'react';
const MyComponet = props => {
return <div> 안녕하세요, 제이름은 {props.name} 입니다. </div>
};
exprot defalt MyComponent;
import React from 'react';
import MyComponet from './MyComponent'
const App = () => {
return <MyComponet name = "React" />;
};
exprot defalt App;
import React from 'react';
const MyComponet = props => {
return <div> 안녕하세요, 제이름은 {props.name} 입니다. </div>
};
MyComponet.defaultProps = {
name : '기본이름'
};
exprot defalt MyComponent
const ironMan = {
name: '토니 스타크',
actor: '로버트 다우니 주니어',
alias: '아이언맨'
};
const captainAmerica = {
name: '스티븐 로저스',
actor: '크리스 에반스',
alias: '캡틴 아메리카'
};
function print(hero) {
const text = `${hero.alias}(${hero.name}) 역할을 맡은 배우는 ${
hero.actor
} 입니다.`;
console.log(text);
}
print(ironMan);
print(captainAmerica);
const ironMan = {
name: '토니 스타크',
actor: '로버트 다우니 주니어',
alias: '아이언맨'
};
const captainAmerica = {
name: '스티븐 로저스',
actor: '크리스 에반스',
alias: '캡틴 아메리카'
};
// ------ 방법 1 ------ //
function print(hero) {
const { alias, name, actor } = hero;
const text = `${alias}(${name}) 역할을 맡은 배우는 ${actor} 입니다.`;
console.log(text);
}
// ------ 방법 2 ------ //
function print({ alias, name, actor }) {
const text = `${alias}(${name}) 역할을 맡은 배우는 ${actor} 입니다.`;
console.log(text);
}
print(ironMan);
print(captainAmerica);
const { alias, name, actor } = hero;
import React from 'react';
const MyComponet = ({name}) => {
return <div> 안녕하세요, 제이름은 {name} 입니다. </div>
};
MyComponet.defaultProps = {
name : '기본이름'
};
exprot defalt MyComponent
import React from 'react';
import PropTypes from 'prop-types';
const MyComponet = ({name}) => {
return <div> 안녕하세요, 제이름은 {name} 입니다. </div>
};
MyComponet.defaultProps = {
name : '기본이름'
};
MyComponet.propsTypes = {
name : PropsTypes.strting
};
exprot defalt MyComponent
name : PropsTypes.strting
}; 設定
isRequiresを使用して必要なprotTypeを設定する
proptypeを指定しないときに警告するメッセージ
≪ステータス|Status|emdw≫
構成部品の内部で変更できる値.
すなわち、propsは親コンポーネント設定の値であり、(子)コンポーネントはpropsの読み取りにのみ使用できます.
(サブアイテム)コンポーネントではpropsを変更することもできます.
種類
ステータス、
クラス構成部品のステータス
クラスコンポーネントでstateを設定する46 constructorメソッドの作成と設定
constructor(props) {
super(props);
this.state = {
number: 0
};
}
render() {
const { number } = this.state;
return (
<div>
<h1>{number}</h1>
<button
onClick={() => {
this.setState({ number: number + 1 });
}}
>+1</button>
</div>
)
}
stateオブジェクトに複数の値が含まれている場合
コンストラクション関数からstateをポップアップ
コンストラクション関数メソッドを使用せずにステータス初期値を設定できます.
import React, { Component } from 'react'
export class Counter extends Component {
state = {
number: 0
};
render() {
const { number } = this.state;
return (
<div>
<h1>{number}</h1>
<button
onClick={() => {
this.setState({ number: number + 1 });
}}
>+1</button>
</div>
)
}
}
export default Counter
this.オブジェクトではなくsetStateに関数パラメータを渡す
this.setStateは非同期でステータスを更新します(すぐには変更しません)
オブジェクトの代わりに関数を使用できます
this.setState((prevState, props) => {
return{
// 업데이트 내용
})
関数構成部品でのusStateの使用
本来stateは利用できませんが、Hooksで可能にします
使用可能なuseState
使用方法を議論する前に、非構造化配列割り当てを学習します.
非構造化配分とは?
オブジェクトの非構造配分と同様
すなわち,配列中の値を容易に抽出する方法である.
オブジェクト構造化割り当てと同様に、配列にも使用できます(上のオブジェクト非構造化割り当てを参照).
useStateの使用
useStateという名前の関数を使用します.
import React, { useState } from 'react';
const Say = () => {
const [message, setMessage] = useState('');
const onClickEnter = () => setMessage('안녕하세요');
const onClickeave = () => setMessage('안녕히가세요');
return (
<div>
<button onClick={onClickEnter}> 입장 </button>
<button onClick={onClickeave}> 퇴장 </button>
<h1>{message}</h1>
</div>
)
}
export default Say;
stateの使用上の注意
state値の変更はsetter関数(2番目の配列)でなければなりません.
配列やオブジェクトを更新する必要がある場合は、どうすればいいですか?
=配列またはオブジェクトをコピーとして保存し、そのコピーをsetter関数に更新
Reference
この問題について([リトラクト処理の技術]Chapter 03:構成部品), 我々は、より多くの情報をここで見つけました
https://velog.io/@dndb3599/리엑트를-다루는-기술Chapter-03-컴포넌트
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([リトラクト処理の技術]Chapter 03:構成部品), 我々は、より多くの情報をここで見つけました https://velog.io/@dndb3599/리엑트를-다루는-기술Chapter-03-컴포넌트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol