Vue3在Setup中使用axios請求獲取的值方式
更新時間:2022年06月24日 11:02:50 作者:3v3n1ng
這篇文章主要介紹了Vue3在Setup中使用axios請求獲取的值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
Setup中使用axios請求獲取的值
上次我們使用axios給項目搞上了網(wǎng)絡(luò)請求,從此項目數(shù)據(jù)不再是靜態(tài)的。對于后端返回的值如何賦值給data里面的變量并且賦予數(shù)據(jù)響應(yīng)式,寫此日記記錄踩坑過程。
axios返回的項目數(shù)據(jù)無法通過函數(shù)返回值返回,如何獲取返回值呢?
<script> import { defineComponent, reactive, onMounted, toRefs, ref } from "vue"; import { getProjectDetailAPI } from "@/api/api"; export default defineComponent({ setup() { //這里定義一個結(jié)構(gòu)體,用來保存項目信息 var Data = reactive({ projectData: [], projectDetailData: [], }); function GetProjectDetail(obj) { const pid = obj.pid; getProjectDetailAPI({ ProjectID: pid }) .then((result) => { /*Data.projectDetailData這個變量是我們定義的reactive對象 所以你打印出來他是一個數(shù)據(jù)代理的實例,并非array(),所以想要把 獲取的報文數(shù)據(jù)復(fù)制到里面,需要使用深拷貝*/ Data.projectDetailData = JSON.parse(JSON.stringify(result.data)); }) .catch((err) => { console.log(err); }); } //掛載后調(diào)用函數(shù)獲取項目數(shù)據(jù) onMounted(() => { GetProjectData(); }); return { //解構(gòu)Data結(jié)構(gòu)體,讓模板可以直接調(diào)用Data里面的對象 ...toRefs(Data), }; }, }); </script>
Vue3+Setup使用知識點
<script lang="ts" setup> import {getCoupon} from './request';//request里面包含接口,此處是引入getCoupon這個接口 import { onMounted, reactive, ref, getCurrentInstance, onActivated } from 'vue'; import { useRoute, useRouter } from 'vue-router'; const route = useRoute();//獲取路由參數(shù) const router = useRouter();//獲取路由對象 const emit = defineEmits(['downStep']);//初始化emit調(diào)用的方法 const props = defineProps({//初始化prop內(nèi)部參數(shù) id:Number, leave:{ type:String,//類型 default:'一級'//默認參數(shù) } }); let name = ref('');//ref初始化普通參數(shù) let obj1 = reactive({//ref初始化復(fù)雜對象參數(shù) name: "老王", age: "50", test: { salary: 3000, year: 1, }, }); let obj2 = ref({//ref也可初始化復(fù)雜對象參數(shù) name: "老王", age: "50", test: { salary: 3000, year: 1, }, }); //ref與reactive都可初始化復(fù)雜對象參數(shù),但是使用上不同 console.log(obj1.name); console.log(obj2.value.name); console.log(name.value);//ref使用需要.value,reactive則不用 watch(name, (newVal, oldValue) => {//監(jiān)聽單個基本數(shù)據(jù)類型(ref) console.log(newVal, oldValue); }); const getList = async (a)=>{//async函數(shù) let data = await getCoupon({a}); }; const getBtnClick =()=>{//普通函數(shù) emit('downStep',1);//對比vue2中的this.$emit console.log(props.id);//使用props中的id } const back = ()=>{ //router.push("/aa");//跳轉(zhuǎn)其他頁面 router.push({url:'/aa',query:{name:'測試'}});//帶參跳轉(zhuǎn) //router.replace("/aa")// } onMounted(() => {//頁面初始化時只請求一次 //初始化生命周期,一般初始化參數(shù)請求時將獲取數(shù)據(jù)接口寫在此處 let a = route.query.a;//獲取跳轉(zhuǎn)頁面時傳遞的參數(shù)a getList(a); }); onActivated(() => {//頁面每次進入時都請求一次,當使用keep-alive并且每次進入頁面都需調(diào)用一次時使用 let a = route.query.a;//獲取跳轉(zhuǎn)頁面時傳遞的參數(shù)a getList(a); }); </script>
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue-i18n結(jié)合Element-ui的配置方法
這篇文章主要介紹了vue-i18n結(jié)合Element-ui的配置方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05解決vue-cli@3.xx安裝不成功的問題及搭建ts-vue項目
這篇文章主要介紹了解決vue-cli@3.xx安裝不成功的問題及搭建ts-vue項目.文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-02-02vue.js默認路由不加載linkActiveClass問題的解決方法
這篇文章主要給大家介紹了關(guān)于vue.js默認路由不加載linkActiveClass問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-12-12