[2021.08.02] React Foundation 2
16514 ワード
📌 1.企業の課題の回顧
💡 定数管理(「配線」ページのpathも定数管理)
class AppRouter extends Component {
render() {
return (
<Router>
<Route exact path={ROUTES.HOME}>
<Home />
</Route>
<Route exact path={`${ROUTES.PRODUCT}/:id`}>
<Product />
</Route>
<Route exact path={ROUTES.RECENT_LIST}>
<RecentList />
</Route>
</Router>
);
}
}
// src/constants/routesPath.js
const ROUTES = {
HOME: '/',
RECENT_LIST: '/recentList',
PRODUCT: '/product',
};
export default ROUTES;
💡 Design
SPA (single page application)
で、FOUC (Flash Of Unstyled Content)
が発生したら、何かおかしい!!💡 Storage Class
💡 url設計
(変更前)
http://localhost:3000/productdetail/prod4/나이키%20윈드러너%20블랙%20L/나이키/60000/false
(変更後)http://localhost:3000/productdetail/4
💡 構成部品ファイル名
💡 クラスコンポーネントのライフサイクルメソッド
:応答ライフサイクルによって実行されます.
_isMounted
変数をコンポーネントDidMount、コンポーネントWillUnmountに作成する必要はありません.class Home extends Component {
_isMounted = false;
async componentDidMount() {
this._isMounted = true;
const notInterested = getNotInterested();
const products = await getJsonData();
this._isMounted &&
this.setState({
products: products.filter(
product => !notInterested.includes(product.id),
),
});
}
componentWillUnmount() {
this._isMounted = false;
}
💡 注目点の分離
Routes.js
に分離してください.💡 ! 演算子の使用
this.setState({isCheckNotInterest: !checked})
handleCheckNotInterest = (e) => {
const checked = e.target.checked;
if (checked) {
this.setState({isCheckNotInterest: true});
} else {
this.setState({isCheckNotInterest: false});
}
};
💡 Reactではグローバル変数を記述する必要はほとんどありません。
eモジュール内にグローバル変数を書き込む必要はないが,新しいDate()を定数として管理する必要はない.
export const NO_INTERRESTED = "no_Interested";
export const WATCH = "watch";
export let RESET_DATE = new Date();
export const setLocalStorageProducts = (watch, product) => {
const initStorage = JSON.parse(localStorage[watch] || "[]");
// 생략...
RESET_DATE = new Date();
const date = getFormatDate(RESET_DATE, "YYYYMMDDHHMISS");
const data = { ...product, date };
// 생략...
};
💡 ReactではDOMに直接アクセスする必要はほとんどありません。
componentDidMount = () => {
const htmlTitle = document.querySelector("title");
htmlTitle.innerText = '최근이력 페이지';
}
💡 参考資料
>AirBnb JavaScriptコード会議
📌 3. Class/Functional Component
Class vs. Functional
なぜFunctional?
⑪再開発が必要なら、機能別に開発しましょう!
どうしてクラスも勉強しますか.
classで開発されたコードを使っている会社も多いです.
📌 4. Frontend Libraries
ライブラリ選択基準/注意点/エラーの確認
e Googleで該当するLiveを検索(Googleの提示順に表示)
eはnpmに入って、ダウンロードがどれだけ活発かを見て、最後の更新はいつですか!
実際の操作でリポジトリを適用するには、次の手順に従います.
ライブラリをインストールして行う場合は、バージョンを更新するたびに会社が管理するので、できるだけ直接実施します.
📌 5. Agile
agile : 1. すばやい機敏である
短周期の開発単位を繰り返して大きなプロジェクトを完成する方法.
現在は滝技術のように簡単に設計>設計>開発>テスト>導入を完了していません.
愛子の日の核心は協力とフィードバックだ.
会議、日常的な立ち位置、仕切りの共有と協力を通じて
Reference
この問題について([2021.08.02] React Foundation 2), 我々は、より多くの情報をここで見つけました https://velog.io/@daeun-react/2021.08.02-React-Foundation-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol