検索
ホームページウェブフロントエンドVue.jsVue.js の実践的な入門: 配列とオブジェクトをループする方法

Vue.js の実践的な入門: 配列とオブジェクトをループする方法

前のセクション (コース パート 3) では、v-ifv - の使用方法を学びました。 show 条件付きレンダリングを実行します。このセクションでは、以前に学んだ概念のいくつかを適用することに加えて、配列とオブジェクトをループする方法を学びます。

v-for

v-for は Vue の基本的な命令の 1 つであり、使い方を学べば、次のように追加できます。プログラムにさらに多くの機能を追加します。

簡単に言えば、v-forfor ループです。 for ループが何なのかまだわからない場合は、for ループは実際にはコードの一部です。コード内の各要素は 1 回実行され、通常、これらの要素はArray (配列) または Object(オブジェクト)

今日は、私たちが行うことすべてに明確な目的があるように、最初から始めます。以下は、index.html ファイルの基本構造です。これをコピーしてエディターに貼り付けることができます。



  <title>Vue 101</title>



  <div>

  </div>

  <script></script>

  <script>
    const app = new Vue({
      el: &#39;#app&#39;,
      data: {

      },
      methods: {

      }
    });
  </script>


まず単純な配列を作成して、ループを使用して配列の内容を出力できるようにしましょう。 data オブジェクトに games というプロパティを作成します。もちろん、お好きな名前を付けることも可能です???。

data: {
  games: [
    'Super Mario 64',
    'The Legend of Zelda Ocarina of Time',
    'Secret of Mana',
    'Super Metroid'
  ]
},

配列を設定したので、それを表示するための単純な <ul></ul> タグを作成しましょう。

<div id="app">
  <ul>
    <li>Game title here</li>
  </ul>
</div>

いいですね! ここで、<ul></ul> 内でできるだけ多くの <li> を出力したいことを Vue に伝える必要があります。配列ラベル。

他の言語では、このように出力をループすることに慣れているかもしれません<li>タグ:

<?php foreach ($game in $games): ?>
  <li><?php echo $game; ?></li>
<?php endforeach; ?>

出力をループする必要があります&lt ;li&gt ; タグはループ内にラップされます。

しかし、Vue では、ループしたいラベル上で v-for ディレクティブを宣言できます。まず、<li> タグに次の変更を加えてから、段階的に分析していきます。

<ul>
  <li v-for="game in games">{{ game }}</li>
</ul>

詳しく分析してみましょう:

    <li>

    v-for コマンドは <li>## に直接追加されます。 # タグは、前に見た

      タグの代わりに使用します。これを書く理由は次のとおりです。「games 配列内の game ごとに <li> タグを作成します。 <li>

      games は、先ほど data で追加した属性であるため、この変数名を使用する必要があることに注意してください。 #game この変数 (単数形) は自分たちで定義されています。

      item、<li>game

      title、または適切と思われるその他のものを使用できます。ただし、この game はループ内で使用する変数であることを理解する必要があります。最後に、<li> で、 タグでは、

      game 変数の内容を出力したいので、ループを実行すると、<li>games

      配列内の文字列が &lt ; に出力されます。 li> tag.index.html ファイルをブラウザで開くと、

      games 配列の内容が表示されます。

    難易度を上げる ここまではうまくいきましたね?

    v-for

    これは実際には非常に単純な概念です, しかし、この例は退屈すぎます。配列にいくつかのオブジェクトを含めて v-if を使用して、物事をもう少し複雑で興味深いものにしてみましょう。どうですか?

    まず、更新しましょうgames プロパティにさらに興味深いデータが含まれています。<pre class='brush:php;toolbar:false;'>data: { games: [ { name: &amp;#39;Super Mario 64&amp;#39;, console: &amp;#39;Nintendo 64&amp;#39;, rating: 4 }, { name: &amp;#39;The Legend of Zelda Ocarina of Time&amp;#39;, console: &amp;#39;Nintendo 64&amp;#39;, rating: 5 }, { name: &amp;#39;Secret of Mana&amp;#39;, console: &amp;#39;Super Nintendo&amp;#39;, rating: 4 }, { name: &amp;#39;Fallout 76&amp;#39;, console: &amp;#39;Multiple&amp;#39;, rating: 1 }, { name: &amp;#39;Super Metroid&amp;#39;, console: &amp;#39;Super Nintendo&amp;#39;, rating: 6 } ] },</pre> 今プログラムを実行しても問題は起こりませんが、

    games## 内のオブジェクトのみが出力されます。 # 文字列形式ですが、あまり美しくありません。実際、情報を出力するには、

      タグを完全に削除し、
      タグを使用する必要があります。(心配しないでください。div を使用しても見苦しくなりますか?)

      全体を置き換えます

      次の内容に置き換えます:
      <div id="app">
        <div v-for="game in games">
          <h1 id="nbsp-game-name-nbsp-nbsp-nbsp-small-nbsp-game-console-nbsp-small">{{ game.name }} - <small>{{ game.console }}</small></h1>
      
          <span v-for="star in game.rating">❤️</span>
      
          <div v-if="game.rating > 5">Wow, this game must be <b>REALLY</b> good</div>
        </div>
      </div>
      ?. 上記のようなことをたくさん見ると怖くなりますか? 心配しないで、それが何であるかを知る必要があるだけです。詳しく分析しましょう:

      #div v-for="game in games" 同じように、

      games

      配列をループし、

      games
        配列を変換する必要があります。内部の各オブジェクトは次の場所に保存されます。 <li>ゲーム

        変数。

        <li>

        看看 <h1></h1> 标签. 因为 game 是一个对象,而这个对象里又有自己的 nameconsolerating 属性。在 <h1></h1> 里面,我们要输出 game 内的 game.namegame.console。正如你现在所看到的那样,v-for 并不像我们之前只输出 <li> 标签,实际上你可以根据你的需要输出不同的 HTML 标签。

        <li>

        嵌套的 v-for。在 span 标签里面,我们有一个嵌套的 v-for 循环(这完全是可以的),只是有点不同,在这里我们没有循环数组或对象。而是循环了一个数值(在本例中是 game.rating,循环将根据 game.rating 的值开始计数,然后输出对应数量的❤️。很简单吧?)

        <li>

        最后是 v-if。我们要在循环中输出一个 <div> 标签,只有当前 <code>game.rating 的值大于 5 时,才会输出一个<div>标签。<p>来吧,在浏览器中继续运行我们的 <code>index.html 文件。

        每次循环时可不可以不使用 DIV ?

        如果你发现写了一大堆 <div> 标签只是为了用 <code>v-for 循环,那么可以使用 <template> template></template> 这个特殊的 HTML 标签帮助你解决这个问题。

        现在将带有 v-for 指令的 <div> 标签改成 <code><template></template> 标签,然后打开你的开发者控制台,你会发现 <h1></h1><span></span> 标签没有被任何东西包裹。

        <template></template> 很特别,因为 Vue 会把它当作一个只用来封装的标签,当我们执行的时候,它不会被渲染到 HTML 中,所以你可以安全地用它来封装一堆其他元素,而不影响你整体的 HTML 结构。

        :key 属性

        最后一件事::key属性。我特意留到了最后来讲解。

        当你用 v-for 循环时,Vue 不知道如何追踪每个元素,因为它不能将对象区别开来。这意味着 Vue 将重新渲染循环创建的整个部分。在我们的例子中,v-for 只是一个很小的部分,性能损失很小,但这些你应该牢记住。

        现在,我们该如何使用它呢?

        :key 接收字符串或数字来 “命名” 或 “追踪” 这个元素,所以我们需要给它一个唯一的标识符。对于我们的 games 来说,很简单,我们可以这样做:

        <div v-for="game in games" :key="game.name">

        我很确定,我们不会在这个列表中出现两次相同的 game 对象,所以这是相当安全的。如果你有来自数据库的数据,一个唯一的 id 在这里使用也很好。

        如果你对 :key 的原理很好奇,你可以看看文档 Key的文档

        既然你已经了解了这么多,我就再强调下文档的重要性。 Vue 的文档非常出色,文档团队在保持更新和清晰性方面做了很多努力并且通过代码示例把每个部分都解释的非常清楚。

        最终代码

        以防万一,这是最终的代码:

        
        
        
          Vue 101
        
        
        
        
        <div v-for="game in games" :key="game.name">

        {{ game.name }} - {{ game.console }}

        ❤️
        Wow, this game must be REALLY good
      <script> const app = new Vue({ el: &#39;#app&#39;, data: { games: [ { name: &#39;Super Mario 64&#39;, console: &#39;Nintendo 64&#39;, rating: 4 }, { name: &#39;The Legend of Zelda Ocarina of Time&#39;, console: &#39;Nintendo 64&#39;, rating: 5 }, { name: &#39;Secret of Mana&#39;, console: &#39;Super Nintendo&#39;, rating: 4 }, { name: &#39;Fallout 76&#39;, console: &#39;Multiple&#39;, rating: 1 }, { name: &#39;Super Metroid&#39;, console: &#39;Super Nintendo&#39;, rating: 6 } ] } }); </script>

      小测验

      请在 <span></span> 标签中添加一个 @click 事件,使它每次点击就会增加一个❤️。

      提示: 你需要将正在循环的 game 对象传递给点击方法。

      原文地址:https://dev.to/marinamosti/hands-on-vuejs-for-beginners-part-4-324l

      译文地址:https://www.php.cn/link/5a13fe4ac11f3e35f4b9f0a99cf504c0

      (学习视频分享:web前端开发编程基础视频

以上がVue.js の実践的な入門: 配列とオブジェクトをループする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はlearnkuで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Vue.js Virtual Domが変更を検出するとどうなりますか?Vue.js Virtual Domが変更を検出するとどうなりますか?May 14, 2025 am 12:12 AM

henthevuue.jsvirtualdomdetectsachange、itupdatesthevirtualdom、diffsit、およびAppliesminimalchangestothestotoreldom。

Vue.jsの仮想Domを実際のDomの鏡と考えるのはどれほど正確ですか?Vue.jsの仮想Domを実際のDomの鏡と考えるのはどれほど正確ですか?May 13, 2025 pm 04:05 PM

Vue.jsのVirtualdomは、実際のDomの鏡であり、正確ではありません。 1.作成と更新:Vue.jsは、コンポーネントの定義に基づいてVirtualdomツリーを作成し、まず状態が変更されたときにVirtualDomを更新します。 2。違いとパッチング:DIFF操作による古い仮想ドームと新しい仮想ドミーの比較、そして最小変更のみを実際のDOMに適用します。 3。効率:VirtualDomは、バッチの更新を許可し、直接DOM操作を削減し、レンダリングプロセスを最適化します。 VirtualDomは、Vue.jsがUIの更新を最適化するための戦略的ツールです。

Vue.js vs. React:スケーラビリティと保守性Vue.js vs. React:スケーラビリティと保守性May 10, 2025 am 12:24 AM

Vue.jsとReactはそれぞれ、スケーラビリティと保守性に独自の利点があります。 1)Vue.jsは使いやすく、小規模プロジェクトに適しています。構成APIは、大規模なプロジェクトの保守性を向上させます。 2)Reactは、フックと仮想DOMがパフォーマンスと保守性を向上させる大規模で複雑なプロジェクトに適していますが、学習曲線は急です。

Vue.jsとReactの未来:傾向と予測Vue.jsとReactの未来:傾向と予測May 09, 2025 am 12:12 AM

Vue.jsとReactの将来の傾向と予測は次のとおりです。1)Vue.jsはエンタープライズレベルのアプリケーションで広く使用され、サーバー側のレンダリングおよび静的サイト生成でブレークスルーを行いました。 2)Reactは、サーバーコンポーネントとデータ収集で革新され、並行性モデルをさらに最適化します。

Netflixのフロントエンド:テクノロジースタックに深く潜りますNetflixのフロントエンド:テクノロジースタックに深く潜りますMay 08, 2025 am 12:11 AM

Netflixのフロントエンドテクノロジースタックは、主にReactとReduxに基づいています。 1.反応は、高性能のシングルページアプリケーションを構築するために使用され、コンポーネント開発を通じてコードの再利用性とメンテナンスを改善します。 2。国家管理には、状態の変更が予測可能で追跡可能であることを確認するために、国家管理に使用されます。 3.ツールチェーンには、コードの品質とパフォーマンスを確保するために、Webpack、Babel、Jest、および酵素が含まれています。 4.パフォーマンスの最適化は、ユーザーエクスペリエンスを向上させるためのコードセグメンテーション、怠zyな読み込み、サーバー側のレンダリングを通じて達成されます。

Vue.jsおよびFrontend:インタラクティブなユーザーインターフェイスの構築Vue.jsおよびFrontend:インタラクティブなユーザーインターフェイスの構築May 06, 2025 am 12:02 AM

Vue.jsは、非常にインタラクティブなユーザーインターフェイスを構築するのに適したプログレッシブフレームワークです。そのコア機能には、レスポンシブシステム、コンポーネント開発、ルーティング管理が含まれます。 1)レスポンシブシステムは、Object.DefinePropertyまたはプロキシを介したデータ監視を実現し、インターフェイスを自動的に更新します。 2)コンポーネント開発により、インターフェイスを再利用可能なモジュールに分割できます。 3)Vuerouterは、ユーザーエクスペリエンスを向上させるための単一ページアプリケーションをサポートしています。

Vuejsの欠点は何ですか?Vuejsの欠点は何ですか?May 05, 2025 am 12:06 AM

vue.jsの主な欠点には次のものが含まれます。1。エコシステムは比較的新しいものであり、サードパーティのライブラリとツールは他のフレームワークほど豊富ではありません。 2。複雑な関数では、学習曲線が急になります。 3.コミュニティのサポートとリソースは、反応や角度ほど広範ではありません。 4.パフォーマンスの問題は、大規模なアプリケーションで発生する可能性があります。 5。バージョンのアップグレードと互換性の課題が大きくなります。

Netflix:フロントエンドフレームワークを発表しますNetflix:フロントエンドフレームワークを発表しますMay 04, 2025 am 12:16 AM

Netflixは、Reactをフロントエンドフレームワークとして使用します。 1.反応のコンポーネント開発と仮想DOMメカニズムは、パフォーマンスと開発効率を向上させます。 2。WebpackとBabelを使用して、コードの構築と展開を最適化します。 3.パフォーマンスの最適化のために、コードセグメンテーション、サーバー側のレンダリング、キャッシュ戦略を使用します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)