首页 > 其他分享 >在Vue3中处理异步API调用并更新表单数据的方法示例

在Vue3中处理异步API调用并更新表单数据的方法示例

时间:2024-08-29 10:15:15浏览次数:11  
标签:异步 axios 示例 formData apiData API Vue3 表单

在Vue 3中,处理异步API调用并更新表单数据通常涉及到使用组合式API(Composition API),它提供了一种更灵活的方式来组织组件逻辑。以下是使用Vue 3的setup函数和reactiveref等响应式API来处理异步API调用并更新表单数据的一个示例。

首先,假设我们有一个表单,需要从API获取一些数据并填充到表单中。

<template>
  <div>
    <form @submit.prevent="submitForm">
      <input v-model="formData.username" type="text" placeholder="Username" />
      <input v-model="formData.email" type="email" placeholder="Email" />
      <button type="submit">Submit</button>
    </form>
  </div>
</template>

<script>
import { reactive, ref, onMounted } from 'vue';
import axios from 'axios';

export default {
  setup() {
    // 使用reactive来创建响应式表单数据对象
    const formData = reactive({
      username: '',
      email: ''
    });

    // 使用ref创建一个响应式变量来存储API调用的结果
    const apiData = ref(null);

    // 定义一个异步函数来获取API数据
    const fetchApiData = async () => {
      try {
        const response = await axios.get('https://api.example.com/data');
        // 将API返回的数据赋值给apiData
        apiData.value = response.data;
        // 更新表单数据
        formData.username = apiData.value.username;
        formData.email = apiData.value.email;
      } catch (error) {
        console.error('Error fetching data: ', error);
      }
    };

    // 组件挂载后调用API
    onMounted(fetchApiData);

    // 定义表单提交函数
    const submitForm = () => {
      console.log('Form data submitted:', formData);
      // 这里可以添加提交表单的逻辑
    };

    // 返回响应式数据和函数,以便在模板中使用
    return {
      formData,
      apiData,
      submitForm
    };
  }
};
</script>

在这个示例中,我们使用了reactive来创建一个响应式的表单数据对象formData,这样任何对formData的修改都会自动更新DOM。我们还使用了ref来创建一个响应式的变量apiData,用于存储从API获取的数据。

fetchApiData是一个异步函数,用于调用API并更新formData。我们使用onMounted生命周期钩子来确保在组件挂载后调用这个函数。

最后,我们将formDataapiDatasubmitForm函数返回,以便在模板中使用。

请注意,这个示例使用了axios库来进行HTTP请求,你需要先安装这个库(如果还没有安装的话):

npm install axios

或者使用yarn:

yarn add axios

确保在Vue项目中正确配置了axios

标签:异步,axios,示例,formData,apiData,API,Vue3,表单
From: https://www.cnblogs.com/suducn/p/18386056

相关文章

  • 淘宝商品API接口:电商数据的金钥匙
    在数字化浪潮的推动下,电商行业蓬勃发展,数据成为企业最宝贵的资产之一。淘宝,作为中国乃至全球最大的在线零售平台,其庞大的商品数据蕴含着无限商机。如何高效地获取并利用这些数据,成为电商从业者和开发者关注的焦点。本文将带您了解淘宝商品API接口的强大功能,以及如何通过它来解锁电......
  • vue3导入excel表格并展示(使用xlsx插件+vite+element-plus)/js上传表格(js+xlsx)
    首先下载两个库npminstallxlsx--savenpminstallfile-saver--save然后在你需要导出的组件里引入库import{saveAs}from'file-saver'import*asXLSXfrom'xlsx'创建函数consthandleExport=()=>{letoneDimensionalArray=[]lettwoDimensionalArray......
  • Vue3 变量响应基础
    在Vue3中有两种分别为选项式和组合式的操作,现在一般用组合式,很少用选项式的操作;1.计算,与变量;直接这样写的话,他不会进行计算,需要添加两个大括号;比如 {{1+1}}变量的话我们可以不用script中的因为里面是Vue2的我们可以改成如果不使用{{}}的话他显示的则会变......
  • Capital许可分析
    在数字化时代,软件已成为企业日常运营的核心。而Capital许可分析,作为确保软件合规使用与成本优化的关键环节,正日益受到企业的重视。本文将深入探讨Capital许可分析的重要性,以及它如何助力企业在竞争激烈的市场中脱颖而出。一、合规性的守护者随着软件行业的快速发展,许可合规性问......
  • vue3的 状态管理库
    1.vue的状态管理库vue常用的状态管理库有 vuex 和Pinia,两者的区别如下:架构设计‌:Vuex采用全局单例模式,通过一个store对象来管理所有的状态;而Pinia采用了分离模式,每个组件都拥有自己的store实例。模块设计:Vuex包含states、mutations、getters、actions、modules,mutat......
  • Vue3常见知识**MS【4】
    一、vue2和vue3的区别1、数据绑定原理不同  vue2:数据绑定是利用ES5的一个API:Object.definePropert()对数据进行劫持,结合发布订阅模式的方式来实现的。  vue3:使用了ES6的ProxyAPI对数据代理。相比vue2.x,使用proxy的优势如下:defineProperty只能监听某个属性,不能对......
  • 利用api方式部署流式接口到nginx服务器,api无法流式输出,但localhost和ip可以的问题
    需要在nginx代理中,配置:proxy_cacheoff;#关闭缓存proxy_bufferingoff;#关闭代理缓冲chunked_transfer_encodingon;#开启分块传输编码tcp_nopushon;#开启TCPNOPUSH选项,禁止Nagle算法tcp_nodelayon;#开启TCPNODELAY选项,禁止延迟ACK算法keepalive_t......
  • 【Linux网络编程】Socket Api函数
    【Linux网络编程】SocketApi函数TCP/IP协议族TCP/IP协议族有sockaddr_in和sockaddr_in6两个专用的socket地址结构体,它们分别用于IPv4和IPv6,在此只将IPv4,如下为structsockaddr_in:structsockaddr_in{sa_family_tsin_family;//地址族:AF_INETu_int......
  • 协议汇总 TCP、UDP、Http、Socket、Web Scoket、Web Service、WCF、API
    TCP:(1)位于OSI传输层,基于soap(信封)协议;(2)数据格式是xml、Json;(3)是面向连接的,需要先建立连接;(4)TCP协议是一个可靠的传输协议,它可以保证传输的一个正确性,保证我们的不丢包不重复,而且数据是按顺序到达的,保证不丢包(握手需要三次,挥手却要四次);(5)典型的TCP/IP之上的协议有FTP、......
  • vue3 常用的几种组件通讯方式
    vue3常用的几种组件通讯方式,大致如下Props/EmitPinia事件总线(mitt)Provide/Inject浏览器本地存储 1.Props/Emit注释:prop属性名称/方法名称的格式,采用 camelCase 与 kebab-case。 1.1props(1)上游组件设置 prop 值(通过v-bind或冒号) 或者 (2)下游......