How to use Axios with Vue CLI

Sử dụng Axios trong Vue CLI phiên bản mới nhất. Cách mà ta ưa dùng để lấy dữ liệu, cách mà Vue 3 xử lý các reactive variables nó sẽ khác so với Vue 2, ta cần cài đặt các biến ( reactive variables )  trong hàm setup()

Cài đặt axios : 

npm install axios

Dưới đây là cách mà ta gọi axios trong Vue

import { ref } from 'vue'
import axios from 'axios'
import { RouterLink } from 'vue-router'
export default {
  name: 'ProductView',
  setup() {
    const products = ref([])
    const count = ref(0)
    const getAllProducts = () => {
      axios.get('https://dummyjson.com/products').then((res) => {
        products.value = res.data.products
        console.log(products.value)
        count.value = products.value.length
      })
    }
   // call function
    getAllProducts()
    return {
      products,
      count
    }
  }
}

Nó sẽ trả về console.log như sau :

Ok, còn các reactive variables (products, count), muốn sử dụng nó, ta cần phải return {products, count

<template>
  <div class="w-full max-w-6xl m-auto">
    <h1 class="w-full font-bold uppercase text-xl text-gray-500 py-5 block">
      Products List of number {{ count }}
    </h1>
    <table class="w-full text-sm text-left text-gray-500">
      <thead class="text-xs text-gray-700 uppercase bg-gray-300">
        <tr>
          <th scope="col" class="px-6 py-3">ID</th>
          <th scope="col" class="px-6 py-3">Title</th>
          <th scope="col" class="px-6 py-3">Category</th>
          <th scope="col" class="px-6 py-3">Price</th>
          <th scope="col" class="px-6 py-3">Rating</th>
          <th scope="col" class="px-6 py-3">Stock</th>
          <th scope="col" class="px-6 py-3">Tags</th>

          <th scope="col" class="px-6 py-3">Modify</th>
        </tr>
      </thead>
      <tbody>
        <tr class="bg-white border-b" v-for="product in products" :key="product.id">
          <th scope="row" class="px-6 py-4 font-medium text-gray-900 whitespace-nowrap">
            {{ product.id }}
          </th>
          <td class="px-6 py-4">{{ product.title }}</td>
          <td class="px-6 py-4">{{ product.category }}</td>
          <td class="px-6 py-4">{{ product.price }}</td>
          <td class="px-6 py-4">{{ product.rating }}</td>
          <td class="px-6 py-4">{{ product.stock }}</td>
          <td class="px-6 py-4">
            <span
              v-for="tag in product.tags"
              class="inline-block bg-gray-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2"
            >
              {{ tag }}
            </span>
          </td>
          <td>
            <span
              class="inline-block bg-yellow-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2"
              ><RouterLink :to="`/edit/${product.id}`">Edit</RouterLink></span
            >
            <span
              class="inline-block bg-red-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2"
              ><RouterLink :to="`/delete/${product.id}`">Delete</RouterLink></span
            >
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

DEMO

Bài Viết Liên Quan

x

Xin chào! Hãy ủng hộ chúng tôi bằng cách nhấp vào quảng cáo trên trang web. Việc này giúp chúng tôi có kinh phí để duy trì và phát triển website ngày một tốt hơn. (Hello! Please support us by clicking on the ads on this site. Your clicks provide us with the funds needed to maintain and improve the website continuously.)

Ngoài ra, hãy đăng ký kênh YouTube của chúng tôi để không bỏ lỡ những nội dung hữu ích! (Also, subscribe to our YouTube channel to stay updated with valuable content!)

Đăng Ký