Vue3在Setup中使用axios請求獲取的值方式
Setup中使用axios請求獲取的值
上次我們使用axios給項(xiàng)目搞上了網(wǎng)絡(luò)請求,從此項(xiàng)目數(shù)據(jù)不再是靜態(tài)的。對于后端返回的值如何賦值給data里面的變量并且賦予數(shù)據(jù)響應(yīng)式,寫此日記記錄踩坑過程。
axios返回的項(xiàng)目數(shù)據(jù)無法通過函數(shù)返回值返回,如何獲取返回值呢?
<script>
import { defineComponent, reactive, onMounted, toRefs, ref } from "vue";
import { getProjectDetailAPI } from "@/api/api";
export default defineComponent({
setup() {
//這里定義一個(gè)結(jié)構(gòu)體,用來保存項(xiàng)目信息
var Data = reactive({
projectData: [],
projectDetailData: [],
});
function GetProjectDetail(obj) {
const pid = obj.pid;
getProjectDetailAPI({ ProjectID: pid })
.then((result) => {
/*Data.projectDetailData這個(gè)變量是我們定義的reactive對象
所以你打印出來他是一個(gè)數(shù)據(jù)代理的實(shí)例,并非array(),所以想要把
獲取的報(bào)文數(shù)據(jù)復(fù)制到里面,需要使用深拷貝*/
Data.projectDetailData = JSON.parse(JSON.stringify(result.data));
})
.catch((err) => {
console.log(err);
});
}
//掛載后調(diào)用函數(shù)獲取項(xiàng)目數(shù)據(jù)
onMounted(() => {
GetProjectData();
});
return {
//解構(gòu)Data結(jié)構(gòu)體,讓模板可以直接調(diào)用Data里面的對象
...toRefs(Data),
};
},
});
</script>Vue3+Setup使用知識點(diǎn)
<script lang="ts" setup>
import {getCoupon} from './request';//request里面包含接口,此處是引入getCoupon這個(gè)接口
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:'一級'//默認(rèn)參數(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)聽單個(gè)基本數(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ù)請求時(shí)將獲取數(shù)據(jù)接口寫在此處
let a = route.query.a;//獲取跳轉(zhuǎn)頁面時(shí)傳遞的參數(shù)a
getList(a);
});
onActivated(() => {//頁面每次進(jìn)入時(shí)都請求一次,當(dāng)使用keep-alive并且每次進(jìn)入頁面都需調(diào)用一次時(shí)使用
let a = route.query.a;//獲取跳轉(zhuǎn)頁面時(shí)傳遞的參數(shù)a
getList(a);
});
</script>
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- vue3使用axios并封裝axios請求的詳細(xì)步驟
- Vue3 axios配置以及cookie的使用方法實(shí)例演示
- 前端vue3使用axios調(diào)用后端接口的實(shí)現(xiàn)方法
- 關(guān)于vue3.0使用axios報(bào)錯(cuò)問題
- Vue3如何使用axios發(fā)起網(wǎng)絡(luò)請求
- 關(guān)于Vue3使用axios的配置教程詳解
- Vue3中使用typescript封裝axios的實(shí)例詳解
- 使用vue3.x+vite+element-ui+vue-router+vuex+axios搭建項(xiàng)目
- vue3 axios安裝及使用示例詳解
相關(guān)文章
VUE實(shí)現(xiàn)移動(dòng)端列表篩選功能
這篇文章主要介紹了VUE實(shí)現(xiàn)移動(dòng)端列表篩選功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
vue 實(shí)現(xiàn)動(dòng)態(tài)路由的方法
這篇文章主要介紹了vue 實(shí)現(xiàn)動(dòng)態(tài)路由的方法,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
Vue 實(shí)現(xiàn)從小到大的橫向滑動(dòng)效果詳解
這篇文章主要介紹了Vue 實(shí)現(xiàn)從小到大的橫向滑動(dòng)效果,結(jié)合實(shí)例形式詳細(xì)分析了vue.js橫向漸變滑動(dòng)效果的實(shí)現(xiàn)步驟、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-10-10
如何使用sm4js進(jìn)行加密和國密sm4總結(jié)
近期由于公司項(xiàng)目的需要開始研究國密SM4加密,下面這篇文章主要給大家介紹了關(guān)于如何使用sm4js進(jìn)行加密和國密sm4的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
過濾器vue.filters的使用方法實(shí)現(xiàn)
這篇文章主要介紹了過濾器vue.filters的使用方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

