[react]定数データ

10474 ワード

🚶🏻‍♀️ 定数データ

  • は、不変のデータ、すなわち静的データ
  • を保持する.
  • UI構成は、必要であるが動的に変化しないため、バックエンドAPIなどのインポートを必要としない静的データを定数データとして作成し、UIを効率的に構成することができる.
  • 使用理由
  • で繰り返されるUIをハードコーディングすると、コードが長くなり、可読性が悪くなり、修正が必要な場合は対応する部分を見つけるのが難しくなり、今後のメンテナンスが困難になる可能性があります.
  • これらの重複UIは、定数データ+アレイである.map()関数の組合せを用いて簡潔に表現できる.
  • 以降に修正が必要な場合は、定数データの対応する部分の内容を変更するだけで済むので、メンテナンスが容易です.
  • 🚶🏻‍♂️ 定数データの例


    ::定数データを使用する前に

  • CommentList.js
  • import React from "react";
    import Comment from "./Comment/Comment";
    import "./CommentList.scss";
    
    function CommentList() {
      return (
        <div className="commentList">
          <h1>댓글</h1>
          <ul>
            <Comment
              name="wecode"
              comment="Welcome to world best coding bootcamp"
              isLiked={true}
            />
            <Comment 
    			name="joonsikyang" 
    			comment="Hi therer." 
    			isLiked={false}
    		/>
            <Comment 
    			name="jayPark" 
    			comment="Hey." 
    			isLiked={false} 
    		/>
          </ul>
        </div>
      );
    }
    
    export default CommentList;
  • Commentという繰り返し使用する部分に対してハードコーディング処理を行った.
  • 以降、コメントの内容を変更する必要がある場合は、対応するCommentを見つけ、propsに割り当てられた値を変更し直す必要があります.コンポーネントにより多くの内容を追加すると、コンポーネント自体が長くなり、毒性が低下します.また、3個ではなく4個、5個を作成したい場合は、Commentを再追加し、name、comment、isLiked propsを1つずつ割り当てる必要があり、面倒になります.
  • ::定数データ使用後

  • CommentData.js
  • const COMMENT_LIST = [
      {
        id: 1,
        userName: 'wecode',
        content: 'Welcome to world best coding bootcamp!',
        isLiked: true
      },
      {
        id: 2,
        userName: 'joonsikyang',
        content: 'Hi there.',
        isLiked: false
      },
      {
        id: 3,
        userName: 'jayPark',
        content: 'Hey.',
        isLiked: false
      }
    ];
    
    export default COMMENT_LIST;
  • CommentList.js
  • import React from 'react';
    import Comment from './Comment/Comment';
    import COMMENT_LIST from './commentData';
    import './CommentList.scss';
    
    function CommentList() {
      return (
        <div className="commentList">
          <h1>댓글</h1>
          <ul>
            {COMMENT_LIST.map(comment => {
              return (
                <Comment
    							key={comment.id}
                  name={comment.userName}
                  comment={comment.content}
                />
              );
            })}
          </ul>
        </div>
      );
    }
    
    export default CommentList;
  • commentData.jsという名前の個別ファイルを作成し、COMMENT LISTという定数データを宣言します.
  • CommentList.jsからCOMMENT LISTをインポートした後、Array.map()メソッドを使用してCommentをレンダリングします.
  • CommentListコンポーネントの内容が短くなりました、Array.map()メソッドを使用してCommentという名前のコンポーネントを作成する目的も明らかで、COMMENT LISTの配列内の要素の数に基づいてCommentのコンポーネントを作成することを目的としています.
  • コメント内容を変更する必要がある場合は、COMMENT LISTの内容を変更するだけで、コメントを4つ、5つにするには、COMMENT LISTスキームに要素を追加するだけでよい.
  • 定数データの長さが長すぎたり、複数のファイルで共通に使用されている雌雄については、上記の例のように個別のjsファイルとして別々に使用することは困難であり、このファイルでのみ使用される単純定数データについては、ファイル内部で使用を宣言することもできる.ただし、このファイルで最も重要な内容は構成部品であるため、構成部品の後に重要度の順序で定数データが宣言されます.
  • *定数データをファイルに宣言して使用する例

  • CommentList.js
  • import React from 'react';
    import Comment from './Comment/Comment';
    import './CommentList.scss';
    
    function CommentList() {
      return (
        <div className="commentList">
          <h1>댓글</h1>
          <ul>
            {COMMENT_LIST.map(comment => {
              return (
                <Comment
    							key={comment.id}
                  name={comment.userName}
                  comment={comment.content}
                />
              );
            })}
          </ul>
        </div>
      );
    }
    
    const COMMENT_LIST = [
      {
        id: 1,
        userName: 'wecode',
        content: 'Welcome to world best coding bootcamp!',
        isLiked: true
      },
      {
        id: 2,
        userName: 'joonsikyang',
        content: 'Hi there.',
        isLiked: false
      },
      {
        id: 3,
        userName: 'jayPark',
        content: 'Hey.',
        isLiked: false
      }
    ];
    
    export default CommentList;


    これらの値が
  • の青いボックスに表示されているFooterの値と同じで、繰り返しても変わらない値である場合、定数データとしてレンダリングされ、メンテナンスが容易になります.
  • 🚶🏾‍♀️