Vue3在Setup中使用axios请求获取的值方式

目录
  • Setup中使用axios请求获取的值
  • Vue3+Setup使用知识点

Setup中使用axios请求获取的值

上次我们使用axios给项目搞上了网络请求,从此项目数据不再是静态的。对于后端返回的值如何赋值给data里面的变量并且赋予数据响应式,写此日记记录踩坑过程。

axios返回的项目数据无法通过函数返回值返回,如何获取返回值呢?

<script>
import {  defineComponent, reactive, onMounted, toRefs, ref } from "vue";
import { getProjectDetailAPI } from "@/api/api";
export default defineComponent({
  setup() {
    //这里定义一个结构体,用来保存项目信息
    var Data = reactive({
      projectData: [],
      projectDetailData: [],
    });
    function GetProjectDetail(obj) {
      const pid = obj.pid;
      getProjectDetailAPI({ ProjectID: pid })
        .then((result) => {
          /*Data.projectDetailData这个变量是我们定义的reactive对象
          所以你打印出来他是一个数据代理的实例,并非array(),所以想要把
          获取的报文数据复制到里面,需要使用深拷贝*/
          Data.projectDetailData = JSON.parse(JSON.stringify(result.data));
        })
        .catch((err) => {
          console.log(err);
        });
    }
    //挂载后调用函数获取项目数据
    onMounted(() => {
      GetProjectData();
    });
    return {
      //解构Data结构体,让模板可以直接调用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();//获取路由参数
const router = useRouter();//获取路由对象
const emit = defineEmits(['downStep']);//初始化emit调用的方法
const props = defineProps({//初始化prop内部参数
	id:Number,
	leave:{
		type:String,//类型
		default:'一级'//默认参数
	}
});
let name = ref('');//ref初始化普通参数
let obj1 = reactive({//ref初始化复杂对象参数
      name: "老王",
      age: "50",
      test: {
        salary: 3000,
        year: 1,
      },
    });
let obj2 = ref({//ref也可初始化复杂对象参数
      name: "老王",
      age: "50",
      test: {
        salary: 3000,
        year: 1,
      },
    });
//ref与reactive都可初始化复杂对象参数,但是使用上不同
console.log(obj1.name);
console.log(obj2.value.name);
console.log(name.value);//ref使用需要.value,reactive则不用
watch(name, (newVal, oldValue) => {//监听单个基本数据类型(ref)
     console.log(newVal, oldValue);
 });
const getList = async (a)=>{//async函数
	let data = await getCoupon({a});
};
const getBtnClick =()=>{//普通函数
	emit('downStep',1);//对比vue2中的this.$emit
	console.log(props.id);//使用props中的id
}
const back = ()=>{
	//router.push("/aa");//跳转其他页面
	router.push({url:'/aa',query:{name:'测试'}});//带参跳转
	//router.replace("/aa")//
}
onMounted(() => {//页面初始化时只请求一次
 //初始化生命周期,一般初始化参数请求时将获取数据接口写在此处
 let a = route.query.a;//获取跳转页面时传递的参数a
 getList(a);
});
onActivated(() => {//页面每次进入时都请求一次,当使用keep-alive并且每次进入页面都需调用一次时使用
 let a = route.query.a;//获取跳转页面时传递的参数a
 getList(a);
});
</script>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue3学习笔记简单封装axios示例实现

    目录 简介 openapi 基本配置 拦截器 api请求 数据渲染 简介 axios是一个基于promise的网络请求库,管理后台使用的场景通常 获取后端api数据,然后交给页面渲染 还是在前面的示例项目上操作,安装axios最新0.27.2版本 cd HELLO-WORLD npm install axios 复制代码 openapi 在网上找到一个开放的openapi地址,免费且无需认证就可以使用 方便开发时模拟接口数据,但不能使用在生产环境中 该openapi返回json数据,比较符合我们

  • vue3如何实现挂载并使用axios

    目录 vue3挂载并使用axios vue全局挂载axios vue3挂载并使用axios 首先在main.js中引入axios并挂载到app.config.globalProperties上 axios配置文件放置./assets/js/axios main.js import { createApp } from 'vue' import App from './App.vue' import './index.css' import axios from './assets/js/axio

  • Vue3引入axios封装接口的两种方法实例

    目录 第一种 1.安装 2.新建一个http.js文件 3.使用 第二种 1.安装 2.新建 3.http.js 4.request.js 总结 第一种 1.安装 npm install axios -S 2.新建一个http.js文件 import axios from "axios"; import qs from "qs"; import { Dialog, Toast } from "vant"; // axios.defaults.ba

  • 关于Vue3使用axios的配置教程详解

    目录 一.安装axios 二.配置axios,添加拦截器 三.使用axios发送请求 附:Vue3 中全局引入 axios 总结 axios中文网站:axios-http.com/zh/ 一.安装axios npm install axios --save 二.配置axios,添加拦截器 在src目录下新建一个request文件夹,在里面新建index.ts(或者.js)文件,编辑代码如下: import axios from 'axios' // 创建一个 axios 实例 const ser

  • Vue3.0 axios跨域请求代理服务器配置方式

    目录 axios跨域请求代理服务器配置 axios跨域问题解决 1.在vue.config.js文件中做如下配置 2.request.js(拦截器页面)如下配置 3.具体请求页面如下配置 axios跨域请求代理服务器配置 首先安装axios npm install axios 然后在vue.config.js文件下配置如下代码 (若没有vue.config.js文件可以自己创建这个文件) module.exports = { devServer: { open: true, port: 8001

  • Vue3如何使用axios发起网络请求

    目录 Vue3使用axios发起网络请求 1.何为Axios? 2.如何安装Axios 3.如何封装网络请求和全局实例化axios 4. api.js是什么? 5.http.js是什么? 6.request.js是什么? 7.如何在Vue文件中请求封装好的API呢? Vue3.0请求接口的例子 Vue3使用axios发起网络请求 即使是小型项目也会涉及到请求后端API,除非你的网站展示的是一些不需要维护的静态数据,第三篇文章我们来给Vue项目搞上axios. 1.何为Axios? 请看官方对Ax

  • Vue3在Setup中使用axios请求获取的值方式

    目录 Setup中使用axios请求获取的值 Vue3+Setup使用知识点 Setup中使用axios请求获取的值 上次我们使用axios给项目搞上了网络请求,从此项目数据不再是静态的.对于后端返回的值如何赋值给data里面的变量并且赋予数据响应式,写此日记记录踩坑过程. axios返回的项目数据无法通过函数返回值返回,如何获取返回值呢? <script> import { defineComponent, reactive, onMounted, toRefs, ref } from &q

  • vue项目及axios请求获取数据方式

    目录 一.首先导入用到的组件和axios 二.在data中将要用到的数据给一个初始值,为空 三.在methods中写方法,发送axios获取数据 四.传递数据 五.封装 axios axios拦截器 一般vue项目中 一个页面是由多个组件组成的,各个组建的数据都是统一在主界面的组件中发送axios请求获取,这样极大地提高了性能. 一.首先导入用到的组件和axios import HomeHeader from './components/Header' import HomeSwiper fro

  • 在Vue中使用axios请求拦截的实现方法

    一.前言 axios的基础使用就不过多的讲解啦,如何使用可以看axios文档使用说明·Axios中文说明 在这里和大家分享一下axios拦截在实际项目中的使用 很多人都看过axios的官方文档中拦截器这一栏,有的人可能会有点懵,因为文档只告诉你有这个东西,而不告诉你在什么情况下使用.很多初学者就会放弃使用axios拦截器,毕竟拦截器是可以不使用的,但是使用拦截器,会在页面中减少很多不必要的代码. 二.说在前面的 项目使用的ui框架是iview 以下友好提示均使用iview ui的message提

  • 如何在Vue项目中使用axios请求

    在实际的项目中,和后台的数据交互是少不了的,我通常使用的是 axios 库,所以以下示例也是以 axios 为基础来进行封装的. 1.安装 首先是 npm 安装 axios 很简单:npm install axios 2.没有封装存在的问题 如果在没有封装接口的项目中,在文件中随处可以看到如下的接口调用方法: this.$axios.post("/user/add", { params: { name: this.name, age: this.age } }) .then(res =

  • python中使用input()函数获取用户输入值方式

    我们编写程序最终目的还是来解决实际问题,所以必然会遇到输入输出的交互问题,python中提供了input函数用来获取用户的输入,我们可以用以下程序演示. user_gender = input("Please enter your gender(F/M):") print(f'Your gender is {user_gender}') 要注意的是在sublime编辑器中不支持input的在线输入,所以我们需要去cmd窗口运行这个程序,结果如下所示: 要注意的是input的返回值是字符

  • react中(含hooks)同步获取state值的方式

    目录 react(含hooks)同步获取state值 环境 代码示例 异步写成同步的方法 react hooks常用方法 1.useState 2.useEffect 3.useContext上下文传值 4.useReducer 5.useMemo 6.useRef react(含hooks)同步获取state值 环境 "dependencies": {     "babel-plugin-transform-decorators-legacy": "^1

  • mybatis调用mysql存储过程并获取返回值方式

    目录 mybatis调用mysql存储过程并获取返回值 1.mysql创建存储过程 2.mybatis调用 mybatis调存储过程遇到返回值null的坑 mybatis调存储过程时返回值null mybatis调用mysql存储过程并获取返回值 1.mysql创建存储过程 #结束符号默认;, delimiter $$语句表示结束符号变更为$$ delimiter $$ CREATE PROCEDURE `demo`(IN inStr VARCHAR(100), out ourStr VARCH

  • java发送url请求获取返回值的二种方法

    下面提供二种方法会使用java发送url请求,并获取服务器返回的值 第一种方法: 复制代码 代码如下: import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFor

  • Spring中@Scope的几种取值方式

    目录 @Scope的几种取值 Spring入门详解scope属性 一.scope属性 二.scope分类 三.scope取值 @Scope的几种取值 1.singleton:一个Spring容器中只有一个Bean的实例,此为Spring的默认配置,全容器共享一个实例 2.prototype:每次调用新建一个Bean的实例 3.Request:Web项目中,给每一个http request新建一个Bean实例 4.Session:Web项目中,给每一个http session新建一个Bean实例.

  • React中使用axios发送请求的几种常用方法

    目录 React中安装并引入axios依赖 使用axios进行GET请求 使用axios.get方式 使用axios(config {...}) 使用axios进行POST请求 使用axios.post 使用axios(config {...}) 同时发送多个请求 详细config对象配置项 axios的返回值对象response axios的全局配置 axios的单一实例化配置 axios拦截器的使用 React中安装并引入axios依赖 在React项目中使用axios请求,首先需要安装ax

随机推荐