レスポンスデータストリーム
応答中のデータストリーム
React開発方式の最大の特徴は素子単位の開発である.アプリケーションのプロトタイプを受信した場合は、まずコンポーネントを見つけます.構成部品を作成したら、ページをアセンブリします.→アップ(bottom-up)開発
◆テストしやすく、拡張性に優れています!
✅ アプリケーションの設計を受信した場合は、まずコンポーネント階層に分割します.
Reactでは、データが上から下へ(Fluxモード).構成部品は親構成部品からpropsを渡すことができます.すなわち、データストリームは上から下へ流れる.
✅ reactは一方向データストリームに従います!
状態の条件
これはが両親から伝えたデータ(props)ではありません. は変更可能なデータです. 要素内の他の状態または支柱は計算できません. 位置決めステータス
ステータスが構成部品に対してのみ有効な場合は、構成部品に配置するだけですが、1つのステータスに複数の構成部品が影響を受ける場合は、共通の親構成部品に配置する必要があります.
逆データ・ストリーム
親構成部品のステータスは子構成部品によって変わります.
◇Stateドラッグアンドドロップ(Lifting State up):handlerをpropsとしてサブアセンブリに渡す
Lifting State Up
親構成部品の「ステータスを変更する関数」自体を子構成部品に渡し、子構成部品によって実行します.
Effect Hook
Side Effect:****関数のいずれかのインプリメンテーションが関数の外部に影響を与える場合、その関数はSide Effectを有する.
Reactは、Side Effectを処理するためのEffect Hookを提供する.
新しい構成部品をレンダリングするときにEffect Hookを実行構成部品を作成すると、 が画面上で初めてレンダリング(表示)されます.コンポーネントに新しい支柱があり、 をレンダリングします.要素の状態が変化し、 がレンダリングされる.
ex)ブラウザAPIを使用してタイトルを変更する
依存関係アレイの依存関係の値が変化すると、最初のパラメータの関数が実行されます.
*外部APIでリソースを受信し、API呼び出しが不要になった場合に使用
fetch APIを使用してAJAXを要求
React開発方式の最大の特徴は素子単位の開発である.アプリケーションのプロトタイプを受信した場合は、まずコンポーネントを見つけます.構成部品を作成したら、ページをアセンブリします.→アップ(bottom-up)開発
◆テストしやすく、拡張性に優れています!
✅ アプリケーションの設計を受信した場合は、まずコンポーネント階層に分割します.
Reactでは、データが上から下へ(Fluxモード).構成部品は親構成部品からpropsを渡すことができます.すなわち、データストリームは上から下へ流れる.
✅ reactは一方向データストリームに従います!
状態の条件
これは
ステータスが構成部品に対してのみ有効な場合は、構成部品に配置するだけですが、1つのステータスに複数の構成部品が影響を受ける場合は、共通の親構成部品に配置する必要があります.
逆データ・ストリーム
親構成部品のステータスは子構成部品によって変わります.
◇Stateドラッグアンドドロップ(Lifting State up):handlerをpropsとしてサブアセンブリに渡す
Lifting State Up
親構成部品の「ステータスを変更する関数」自体を子構成部品に渡し、子構成部品によって実行します.
Effect Hook
Side Effect:****関数のいずれかのインプリメンテーションが関数の外部に影響を与える場合、その関数はSide Effectを有する.
Reactは、Side Effectを処理するためのEffect Hookを提供する.
useEffect
の最初のパラメータは関数であり、この関数内で副作用を実行すればよい.新しい構成部品をレンダリングするときにEffect Hookを実行
ex)ブラウザAPIを使用してタイトルを変更する
import { useEffect, useState } from "react";
import "./styles.css";
export default function App() {
const proverbs = [
"좌절감으로 배움을 늦추지 마라",
"Stay hungry, Stay foolish",
"Memento Mori",
"Carpe diem",
"배움에는 끝이 없다"
];
const [idx, setIdx] = useState(0);
const handleClick = () => {
setIdx(idx === proverbs.length - 1 ? 0 : idx + 1);
};
return (
<div className="App">
<button onClick={handleClick}>명언 제조</button>
<Proverb saying={proverbs[idx]} />
</div>
);
}
function Proverb({ saying }) {
useEffect(() => {
document.title = saying;
});
return (
<div>
<h3>오늘의 명언</h3>
<div>{saying}</div>
</div>
);
}
じょうけんえいきょうuseEffect
の第2の因子は、条件を含む配列である.条件は、値が変更された場合を意味します.配列にはいくつかの値が含まれています.この配列を従属関係配列と呼ぶ.依存関係アレイの依存関係の値が変化すると、最初のパラメータの関数が実行されます.
import { useEffect, useState } from "react";
import "./styles.css";
import { getProverbs } from "./storageUtil";
export default function App() {
const [proverbs, setProverbs] = useState([]);
const [filter, setFilter] = useState("");
const [count, setCount] = useState(0);
useEffect(() => {
console.log("언제 effect 함수가 불릴까요?");
const result = getProverbs(filter);
setProverbs(result);
}, [filter,count]);
const handleChange = (e) => {
setFilter(e.target.value);
};
const handleCounterClick = () => {
setCount(count + 1);
};
return (
<div className="App">
필터
<input type="text" value={filter} onChange={handleChange} />
<ul>
{proverbs.map((prvb, i) => (
<Proverb saying={prvb} key={i} />
))}
</ul>
<button onClick={handleCounterClick}>카운터 값: {count}</button>
</div>
);
}
function Proverb({ saying }) {
return <li>{saying}</li>;
}
✅ 空の配列を2番目のパラメータとして使用すると、effect関数は、構成部品の最初の作成時にのみ実行されます.*外部APIでリソースを受信し、API呼び出しが不要になった場合に使用
fetch APIを使用してAJAXを要求
useEffect(() => {
setIsLoading(true);
fetch(`http://서버주소/proverbs?q=${filter}`)
.then(resp => resp.json())
.then(result => {
setProverbs(result);
setIsLoading(false);
});
}, [filter]);
✅ 外部API接続が遅いことを考慮して、ロードスクリーン(loading indicator)の実装(fetch要求の前後にsetIsLoading
を設定してより良いUXを実現する)Reference
この問題について(レスポンスデータストリーム), 我々は、より多くの情報をここで見つけました https://velog.io/@jus1234/React-데이터-흐름テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol