VueとAxiosでJSONデータをフェッチするにはどうすればよいですか

MK01111000

JSONファイルから製品データをフェッチしようとしていますが、機能しません。私はいくつかのことを試し、解決策をインターネットで検索しましたが、インターネット上の例はどれも私の状況に匹敵しません。私はvueとaxiosの両方に慣れていないので、無知を許してください。

これは私がこれまでに持っているものです:

Vue.component('products',{
data: {
    results: []
},
mounted() {
    axios.get("js/prods.json")
    .then(response => {this.results = response.data.results})
},
template:`
<div id="products">
<div class="productsItemContainer" v-for="product in products">
            <div class="productsItem">
                <div class="">
                    <div class="mkcenter" style="position:relative">
                        <a class="item">
                            <img class="productImg" width="120px" height="120px" v-bind:src="'assets/products/' + product.image">
                            <div class="floating ui red label" v-if="product.new">NEW</div>
                        </a>
                    </div>
                </div>
                <div class="productItemName" >
                    <a>{{ product.name }}</a>
                </div>
                <div class="mkdivider mkcenter"></div>
                <div class="productItemPrice" >
                    <a>€ {{ product.unit_price }}</a>
                </div>
                <div v-on:click="addToCart" class="mkcenter">
                    <div class="ui vertical animated basic button" tabindex="0">
                        <div class="hidden content">Koop</div>
                        <div class="visible content">
                            <i class="shop icon"></i>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    `
})
new Vue({
el:"#app",
});

jsonファイルは次のとおりです

{
    "products":[
        {
            "name": "Danser Skydancer",
            "inventory": 5,
            "unit_price": 45.99,
            "image":"a.jpg",
            "new":true
        },
        {
            "name": "Avocado Zwem Ring",
            "inventory": 10,
            "unit_price": 123.75,
            "image":"b.jpg",
            "new":false
        }
    ]
}

以下が機能したため、問題はJSONファイルからのデータのフェッチにのみあります。

Vue.component('products',{
    data:function(){
        return{
            reactive:true,
            products: [
           {
            name: "Danser Skydancer",
            inventory: 5,
            unit_price: 45.99,
            image:"a.jpg",
            new:true
          },
          {
            name: "Avocado Zwem Ring",
            inventory: 10,
            unit_price: 123.75,
            image:"b.jpg",
            new:false
          }
            ],
          cart:0
        }
    },
   template: etc.........
ヨムS。

警告が示唆するように、以下を実行してください。

  1. レンダリング中にデータ配列を名前として参照しているため、データ配列の名前をからresultsproducts変更します。
  2. データオプションは関数である必要があるため、データオプションをオブジェクトを返す関数にして、各インスタンスが返されたデータオブジェクトの独立したコピーを維持できるようにします。これに関するドキュメントをご覧ください
Vue.component('products', {
  data() {
    return {
      products: []
    }
  },

  mounted() {
    axios
      .get("js/prods.json")
      .then(response => {
        this.products = response.data.products;
      });
  },

  template: `
    //...
  `
}

<div id="products">
  <div class="productsItemContainer" v-for="product in products">
    <div class="productsItem">
 ...

また、CDNを使用していないので(私は思う)、テンプレートリテラル内で行うのではなく、テンプレートを別のVueファイルを持つコンポーネントにすることをお勧めします。

Products.vue

<template>
  <div id="products">
    <div class="productsItemContainer" v-for="product in products">
      <div class="productsItem">
        <!-- The rest of the elements -->

      </div>
    </div>
  </div>
</template>

<script>
  export default {
    name: 'Products',

    data() {
      return {
        products: []
      }
    },

    mounted() {
      axios
        .get("js/prods.json")
        .then(response => {
          this.products = response.data.products;
        });
    }
  }
</script>

そして、メインのJSファイルまたはこのコンポーネントを必要とする他の場所で:

import Products from './components/Products.vue';

new Vue({
  el: '#app',

  data() {
    return {
      //...
    }
  },

  components: {
    Products
  }
})
<div id="app">

  <Products />

</div>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

データベースからデータをフェッチするときにdatagridviewに列を追加するにはどうすればよいですか?

分類Dev

Mysqlデータを52週間形式でフェッチするにはどうすればよいですか?

分類Dev

Retrofitを使用してjsonからリストとしてデータをフェッチするにはどうすればよいですか?

分類Dev

Firestoreからデータをフェッチするにはどうすればよいですか?

分類Dev

FlaskのAPIからデータをフェッチするにはどうすればよいですか?

分類Dev

React NativeとAxiosでフォームデータを送信するにはどうすればよいですか?

分類Dev

フェッチデータを$ scope.variableに割り当てるにはどうすればよいですか

分類Dev

Reduxでデータをフェッチするときに競合状態を回避するにはどうすればよいですか?

分類Dev

React Nativeでフェッチした後にのみJSONデータをコンソールに出力するにはどうすればよいですか?

分類Dev

Flutterでキーなしでjsonデータをフェッチするにはどうすればよいですか?

分類Dev

データベースからフェッチしているときに空の文字列を修正するにはどうすればよいですか?

分類Dev

フェッチされたJSONデータをAsync / awaitを使用してDOMに正しく表示するにはどうすればよいですか?

分類Dev

FutureBuilderを使用しているときに一度だけデータをフェッチするにはどうすればよいですか?

分類Dev

データフレームの各行の各列の値とタイプをフェッチするにはどうすればよいですか?

分類Dev

フェッチされたjsonからさまざまなデータ型をレンダリングするにはどうすればよいですか?

分類Dev

useEffectをAxiosフェッチAPIデータと組み合わせて使用すると、nullが返されます-これに対処するにはどうすればよいですか?

分類Dev

AndroidのjsonからデータをフェッチしてRecyclerViewに表示するにはどうすればよいですか?

分類Dev

JavaScriptでMySQLデータベースからデータをフェッチしてグラフを作成するにはどうすればよいですか?

分類Dev

スピナーでsqliteからdoubleデータをフェッチしないようにするにはどうすればよいですか?

分類Dev

jQuery AJAXでPHPデータをチェックするにはどうすればよいですか?

分類Dev

pdoから列ごとにデータをフェッチするにはどうすればよいですか?

分類Dev

困惑。axiosからvueのデータを取得して表示するにはどうすればよいですか?

分類Dev

データベースからフェッチしたデータをメールで送信するにはどうすればよいですか?

分類Dev

フラッターのボタンクリック後にデータをフェッチするにはどうすればよいですか?

分類Dev

CoreNFCとSwiftUIを使用してasycデータフェッチを接続するにはどうすればよいですか?

分類Dev

フェッチリターンデータが常にnullであるphpでreact-nativeを使用するにはどうすればよいですか?

分類Dev

github apiフェッチデータをリンクとして表示するにはどうすればよいですか?

分類Dev

cifsマウントフォルダーでファイルメタデータをフェッチするにはどうすればよいですか?

分類Dev

グラファイトからデータをフェッチする際に正規表現を使用するにはどうすればよいですか?

Related 関連記事

  1. 1

    データベースからデータをフェッチするときにdatagridviewに列を追加するにはどうすればよいですか?

  2. 2

    Mysqlデータを52週間形式でフェッチするにはどうすればよいですか?

  3. 3

    Retrofitを使用してjsonからリストとしてデータをフェッチするにはどうすればよいですか?

  4. 4

    Firestoreからデータをフェッチするにはどうすればよいですか?

  5. 5

    FlaskのAPIからデータをフェッチするにはどうすればよいですか?

  6. 6

    React NativeとAxiosでフォームデータを送信するにはどうすればよいですか?

  7. 7

    フェッチデータを$ scope.variableに割り当てるにはどうすればよいですか

  8. 8

    Reduxでデータをフェッチするときに競合状態を回避するにはどうすればよいですか?

  9. 9

    React Nativeでフェッチした後にのみJSONデータをコンソールに出力するにはどうすればよいですか?

  10. 10

    Flutterでキーなしでjsonデータをフェッチするにはどうすればよいですか?

  11. 11

    データベースからフェッチしているときに空の文字列を修正するにはどうすればよいですか?

  12. 12

    フェッチされたJSONデータをAsync / awaitを使用してDOMに正しく表示するにはどうすればよいですか?

  13. 13

    FutureBuilderを使用しているときに一度だけデータをフェッチするにはどうすればよいですか?

  14. 14

    データフレームの各行の各列の値とタイプをフェッチするにはどうすればよいですか?

  15. 15

    フェッチされたjsonからさまざまなデータ型をレンダリングするにはどうすればよいですか?

  16. 16

    useEffectをAxiosフェッチAPIデータと組み合わせて使用すると、nullが返されます-これに対処するにはどうすればよいですか?

  17. 17

    AndroidのjsonからデータをフェッチしてRecyclerViewに表示するにはどうすればよいですか?

  18. 18

    JavaScriptでMySQLデータベースからデータをフェッチしてグラフを作成するにはどうすればよいですか?

  19. 19

    スピナーでsqliteからdoubleデータをフェッチしないようにするにはどうすればよいですか?

  20. 20

    jQuery AJAXでPHPデータをチェックするにはどうすればよいですか?

  21. 21

    pdoから列ごとにデータをフェッチするにはどうすればよいですか?

  22. 22

    困惑。axiosからvueのデータを取得して表示するにはどうすればよいですか?

  23. 23

    データベースからフェッチしたデータをメールで送信するにはどうすればよいですか?

  24. 24

    フラッターのボタンクリック後にデータをフェッチするにはどうすればよいですか?

  25. 25

    CoreNFCとSwiftUIを使用してasycデータフェッチを接続するにはどうすればよいですか?

  26. 26

    フェッチリターンデータが常にnullであるphpでreact-nativeを使用するにはどうすればよいですか?

  27. 27

    github apiフェッチデータをリンクとして表示するにはどうすればよいですか?

  28. 28

    cifsマウントフォルダーでファイルメタデータをフェッチするにはどうすればよいですか?

  29. 29

    グラファイトからデータをフェッチする際に正規表現を使用するにはどうすればよいですか?

ホットタグ

アーカイブ