有害であると思われるDOMツリーに自分自身を追加する反応のデフォルトの方法


せっせと



これをするな


<body>
  <div id="root"></div>
</body>
const rootElement = document.getElementById('root');

ReactDOM.render(<App />, rootElement);

代わりにこうする


<body>
  <div data-role-react-root></div>
</body>
const rootElement = document.querySelector('[data-role-react-root]'),

ReactDOM.render(<App />, rootElement);

何を話しているのですか。


あなたが反応しているか、the most basic of its tutorialsに続いたならば、チャンスはあなたが非常によく知られている以下の断片を見つけるでしょう
<!-- here reduced to the bare minimum for simplicity's sake -->
<body>
  <div id="root"></div>
</body>
const rootElement = document.getElementById("root");

ReactDOM.render(<App />, rootElement);
この<div id="root"></div>プラスのJavaScriptのスニペット、またはそれらの亜種の一つは、どこにでもあります:チュートリアル、公式ドキュメント、CREATEのようなツールは、APPとNX、オンラインサンプルを反応させます.至る所で.
ここでは、これが有害である点に悪い理由です.

それはなぜ有害なのか


一言で言えば
  • IDとクラスは、スタイリング目的に使用されることを意図しています.
  • <div class="some-class"></div>
    
  • より良い、スタイリング目的のためのIDを使用しないでくださいナビゲーション用にのみ使用します.
  • <a href="/somepage#pricing">Pricing</a>
    
    <!-- more code -->
    
    <section id="pricing">
      <!-- awesome pricing table -->
    </section>
    
  • HTMLに特別な意味を追加する必要がある場合、データ属性を使用します.
  • <div data-special>Such special, much data</div>
    
    関心のこの分離(クラスを介してスタイリング、IDを介してナビゲーション、データ属性を介して特別な意味)は、あなたが最も根本的にあなたのキャリアのいくつかの時点で自分自身を見つける場合は、反応ルート要素として<div id="root"></div>を使用しているいくつかの有害な状況を回避するのに役立ちます.

    有害状況

  • Sueは、新しい反応アプリを作成します.
  • <div id="root"></div>
    
  • ボブは、プロジェクトを望みます.アランによるデザインは主要な容器のために毛皮のピンクの境界線を持ちます.
  • #root {
      border: 2rem furry pink;
    }
    
  • ジョンCEOは、ビジョンを持ちます:毛皮の境界は、2005です!我々はそれを取り除く必要がある!
  • ヨハネCEOは24日、午前5時00分にアランを呼び出して、将来の投資家との会談の前に、彼に境界を変えるよう頼みます.
  • アランは、国境を取り除くのに十分なCSSスキルを持つデザイナーですが、JavaScriptも反応スキルも全くありません.
  • それから、彼の仕事のためのまれなフラッシュの中で、アランデザイナーは、#rootが使われる場所のためにコードベースを捜します.
    アランは、我々の友人id="root"を見つけます.
    アランは、彼がちょうどそれのための唯一の理由を取り除いたと思います、そして、全部の線を削除してください.
    コーヒーの一口、生産への展開、そして仕事は重要な会議の直前に行われます.
    カオスは起こります.

    有害状況

  • Sueは、新しい反応アプリを作成します.
  • <div id="root"></div>
    
  • ボブはプロジェクトの作業を開始しますが、まだ1トンの仕事で会社を残します.
  • John CEOは、スマートであることを決めて、外のスペースからジュニア開発者の束を雇います.
  • XYZ、宇宙からのジュニアDEVのうちの1つは新しい戦略的な特徴に取り組み、彼女がいるジュニアである、彼女は戦略的な特徴のためのベースとして<div id="root"></div>を使用します.
  • Twitterで何かが起こり、突然「root」は良い言葉ではない.Sue HTMLを変更します.
  •   <div id="react-base"></div>
    
  • SUEも対応する初期化コードを変更します.
  • ReactDOM.render(<App />, document.getElementById('react-base'));
    
  • 戦略的な機能はもう機能しません.
  • カオスは起こります.

    結論


    これらの有害な状況の両方は、私に過去20年にわたって複数回起こりました.
    最初は、私はアランかXYZでした、最近、私はボブかスーでした.
    私たちはそれを避ける知識を持っていた.何か私たちのキャリアの最初の数ヶ月間に学んだ.
    何か古い男が教えてくれたし、忘れてしまった.

    何がベストプラクティス


    HTML、CSS、およびJavaScriptの操作
    スタイリング目的のための
  • は、クラスと要素セレクタだけを使用します.
  • アンカーとナビゲーション用のIDのみを使用します.
  • JavaScript経由でDOM要素を取得する必要がある場合は、データ属性を使用します.
  • 一方、
  • あなたがクラスを見るならば、それがスタイリングだけのためであると仮定してください.
  • IDを見るなら、それはナビゲーションのためだけであると仮定してください.
  • データ属性を参照すると、どうにかJavaScript経由で使用されます.
  • 懸念の分離
    あなたがそれを尊重することを覚えている場合は、作品驚異.

    イメージクレジット


    Vladyslav CherkasenkoUnsplashによる
  • のカバー写真
  • Jamie TempletonUnsplashによる
  • 写真