Mock data/map



本プロジェクトの進行中に認識した内容を作成します.
 useEffect(() => {
    fetch('/Data/headerData.json')
      .then(res => res.json())
      .then(res => setHeaderData(res));

    fetch('/Data/listRelatedData.json')
      .then(res => res.json())
      .then(res => setRelaredListUserData(res));

    fetch('/Data/WrapAuthor.json')
      .then(res => res.json())
      .then(res => setAuthorData(res));

    fetch('/Data/FooterBar.json')
      .then(res => res.json())
      .then(res => setFooterData(res));
  }, []);
  • fetchファイルは、少なくとも1つのuserEffectに含まれます.[]がない場合は、無限レンダリングが発生します.
    作成する必要があります.
  • return (
        <div className="detailPage">
          <Header pageHeaderData={headerData} />
          <div className="wrapBodyFrame">
            <BodyFrame
              setIsCommentOpen={setIsCommentOpen}
              isCommentOpen={isCommentOpen}
              inputComment={inputComment}
              contentBodyData={contentBodyData}
            />
            {isCommentOpen && (
              <CommentArea
                addComment={addComment}
                deleteComment={deleteComment}
                inputComment={inputComment}
                onChange={onChange}
                value={commentValue}
              />
            )}
            <WrapAuthor authorData={authorData} />
            <section className="wrapArticle">
              <ListRelatedArticle relatedData={relaredListUserData} />
            </section>
            <div className="wrapFooterBanner">
              <img
                src="/images/DetailPage/footerImage.png"
                className="footerImage"
                alt="하단 배너"
              />
            </div>
          </div>
          <FooterBar
            footerBar={footerBarData}
            onChangePostContent={onChangePostContent}
          />
        </div>
      );
    すべての関数は戻りに存在する必要があります.
    コンポーネントの名前とユーザーステータスを作成する必要があります.
    const [relaredListUserData, setRelaredListUserData] = useState([]);
      const [isCommentOpen, setIsCommentOpen] = useState(false);
      const [inputComment, setInputComment] = useState([]);
      const [commentValue, setCommentValue] = useState('');
      const [headerData, setHeaderData] = useState([]);
      const [authorData, setAuthorData] = useState([]);
      const [footerBarData, setFooterData] = useState([]);
      const [contentBodyData, setContentData] = useState([]);
    初期値は
  • usStateの後ろにあります.一番前の値は入力値です.後の値は変更する値です.
  • 再構築事項

  • fetchポートアドレス(どうせバックエンドのサイクル)を書く必要はありません.method=getはデフォルト関数です.
    省略できます.
  • 電子演算子は複製された感じがします.だからちゃんと使って
    stateは直接値を変更できません.変わったのか変わっていないのかわからないので元に触れない
    コピーを交換しなければなりません.
  • 性格の異なる州は分けるべきだ.
  • pwは書かないで、パスワードを書いたほうがいいです.
  • の状態を減らすことが望ましい.最小化する必要があります.
  • の名前は、変数名を読み込むだけでその役割を知ることができるのが望ましい.
  • srcファイルに設定します.jsという名前のファイルを作成し、単独で管理することをお勧めします.
    const BASE_URL = ‘ http://10.58.0.32:8000' ;
    メンテナンスのためには、URLモジュールを個別に作成することが望ましい.
  • {login ? ${}}backticバー
  • を使用
  • では、1つのコンポーネントを1つのscssファイルから分離して、1つのUIのみを表示することをお勧めします.
  • Index.jsでリセットし、commonを読み込みます.
    fontとかは共通の位置に置けばいいですね
  • Blockプロパティは、元の幅が100%であるため、ローを必要としません.必要な場合がありますが.
    親がflexの場合はinline-block、クラスを100%あげたい場合は
  • idは使わないほうがいいです.プロジェクト全体で一意でなければなりません.
  • userefには2つの用途があります.一つ目はdocumentクエリーコレクターのようにHTMLをインポートする場合.
    インポートしたいHTMLにref={}と書きます.
    2番目のコンテナのように使用できます.
  • 関数で使用される変数は関数でのみ使用され、関数外では消えます.消えないuseref
  • というシャーシがあります.
  • 、関数の実行が終了すると、変数は常に関数に格納されます.
  • altサイクル
  • を加える
  • 企業
  • コードを位置決めするには、さまざまな方法があります.同じように関心のあることを縛ればいい.あるいはホックを一つの場所に置く上のコードでは、hook間はバンドルされています.
  • 応答式ドキュメントフォーム制御コンポーネント/非制御コンポーネントを参照
  • scssでは&演算子に良い必要があります.
  • がネストされている場合は、メディアクエリを下に書く必要はありません.適用するトップレベルのラベルに入れます.
  • 文字列の値をstateに入れないほうがいいです.間違いやすいので定数に入れて自動完了機能を書き出します.
  • パスカルキャビネットは、構成部品の名前付け時にのみ
  • を使用します.
    1行
  • の余白属性
  • に変更
  • 矢印関数
  • を多く使用
  • 矢印関数では、カッコを使用するか使用しないかの違いは、直接書くだけで戻る必要のない関数です.
    コードが複数行に表示される場合はカッコを使用します.Returnを書かないと、定義されていない
  • になります.
  • コンソールでPRをアップロードする前に消す
  • !!生成ブール値
  • を使用
  • 反応器はあまりaラベルを書かないほうがいいです.反応器は単ページで、直接別のページに移動すると
  • ですから.