Vue / axios / props 调用后端接口数据并渲染到页面

2023-05-16

情景介绍

给了一个可视化大屏的代码,代码上写的是假数据。现在要调用后端接口获取数据,并将其渲染到页面上。

分析问题

给的代码是一个 vue 组件嵌套一个子组件,要把数据渲染到子组件上。

  1. 要调用后端接口,写 axios 调用接口。
  2. 接口数据要渲染到一个子组件上,父子组件传值要用到 props
  3. 子组件中需要的数据是数组,接口得到的数据是数组包含很多个对象,需要处理。

1.axios调用接口

@/utils/requests.js // 在 utils 中存放通用工具函数 request.js

import axios from axios

axios.defaults.baseURL = 'http://www.test.com';
axios.defaults.headers.post['Content-Type'] = 'application/json';
axios.defaults.headers.post['X-Requested-With'] = 'XMLHttpRequest';
axios.defaults.timeout = 30000;

...

export default {
	get(url,params) {
        return axios({
            method: 'get',
            url,
            params
        }).then(response => {
            return response.data;
        })
    }
}

@/api/page/test.js // 写业务场景下调用接口函数

import http from '@/utils/request';

export const getList = () => {
    return http.get('/api/List');
}

@/views/father.vue // 在父组件页面调用接口获取数据

<template>
	<div>
        <!-- data是Son组件的props自定义属性 -->
        <Son :data="list"></Son>
    </div>
</template>

<script>
import Son from '@/components/Son';
import { getList } from '@/api/page/test';
    
export default {
    data () {
        return {
            list:[],	// 存储获取到的数据
        }
    },
    components: {
        Son
    },
    mounted: {
        getListData()
    },
    methods: {
        getListData() {
            // 这里getList获取到的res是接口返回的所有内容(包含code、msg、data等),里面只有data是业务数据
            getList().then(res => {
                this.list = res.data;
            })
        }
    }
}
</script>

2.props组件间数据共享

@/components/Son.vue // 子组件里写props获取父组件里的数据

<script>
export defalut {
    props: {
        // 子组件中用于接收父组件数据的自定义属性
        data: {
            type: Array,
            default: () => [
                ['1234','zhangsan','2022-10-12','content'],
                // ...
                ['1234','zhangsan','2022-10-12','content']
            ]
        }
    }
}
</script>

3.处理数据

可以发现子组件中需要的数据格式是

[
	[...],
	[...]
]

而现在获取到的数据格式是

[
	{...},
	{...}
]

我的思路是循环拿出数据中的每一个 Object,然后将 Object 转成数组。修改 father.vue里的

<script>
export default {
    data () {
        return {
            list:[],	// 存储获取到的数据
        }
    },
    //...
    methods: {
        getListData: {
            	// 这里的res是接口返回的所有内容
            getList().then(res => {
            	for(let i in res.data) {
        			let arr = Object.values(res.data[i]);
    				this.list.push(arr);
    			}
        	})
        }
    }
}
</script>

优化

处理数据这边我只思考了如何把 Object 转成数组,放到 list[] 里传给子组件。但是这样做对接口数据的处理还是比较粗糙的,如果子组件只想拿部分接口数据就有问题了。

请教前辈的代码写法:

<script>
export default {
    data () {
        return {
            list:[],	// 存储获取到的数据
        }
    },
    //...
    methods: {
        getListData: {
            	// 这里的res是接口返回的所有内容
            getList().then(res => {
            	if(res.data && res.data.length > 0) {
        			res.data.forEach(item => {
        				this.list.push([item.Number, item.Name, item.Date, item.Content]);
    				});
    			}
        	});
        }
    }
}
</script>

解读

forEach() 可以调用数组每个元素,并将元素传递给回调函数。

注意:forEach() 对于空数组是不会执行回调函数的。

现在不是拿到数组包对象形式的数据吗,用 forEach() 调用数组中每一个 Object ,然后 Object 传递给回调函数参数 item,通过 item 拿到指定的数据放到数组中,最后将数组 push 进 list[] 。

总结

其实 forEach() 思想也是循环,但是关键点在调用到每个 Object 后,用 Object. 的形式拿到对象里指定的数据这一步我没考虑到,而且 forEach() 的写法简洁美观。

这次尝试学习到的3点:

  • axios 请求接口数据
  • props 组件间数据共享
  • forEach() 方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue / axios / props 调用后端接口数据并渲染到页面 的相关文章

  • 将以下 Paypal curl 命令转换为 axios?

    如何将此 paypal curl 命令转换为 Axios curl v https api sandbox paypal com v1 oauth2 token H Accept application json H Accept Lang
  • 如何使用 Axios 发布到 Django?

    我正在从 Jquery AJAX 迁移到 Axios 因为我使用的是 ReactJS 所以我认为它更干净 我在向服务器发布一个简单的请求时遇到了一些麻烦 post 方法会通过我的视图 但每当我print request POST 我有一个空
  • componentDidMount 生命周期方法中子组件抛出的错误未在错误边界中捕获

    我正在学习 React 当 API 服务器不可用时 无法获取错误边界来捕获子组件中 axios http 请求引发的网络连接错误 我可以看到错误记录在子组件的 catch 处理程序中 但是 ErrorBoundary 组件没有捕获 thro
  • Axios - 删除带有请求正文和标头的请求?

    我在 ReactJS 中编程时使用 Axios 并假装向我的服务器发送 DELETE 请求 为此 我需要标题 headers Authorization 身体是由 var payload username 我一直在互联网上搜索 只发现 DE
  • 使用 axios 递归获取数据并链接结果

    我有一个模式的网址http www data com 1 其中末尾的 1 可以一直运行到一个未预定义的数字 它返回一个数组 我需要将我得到的所有数组连接成一个 我的策略是递归执行 get 请求 直到收到 404 错误 然后返回结果 var
  • 将数组作为 axios 请求中的参数传递

    我需要通过以下方式提出请求axios 其中我想将这种类型的数组作为数组传递 1 2 3 4 我需要这些数据从我的后端进行选择查询 我的问题是 我应该使用GET or POST请求以及传递该数组的正确方法是什么 你可以POST它作为 json
  • Axios“无法在模块外部使用 import 语句”

    我有一个 Vue js 应用程序 其中两个文件包含 import axios from axios 这些文件位于应用程序内的 src lib 中 并在第一行包含 import 语句 无论 package json 说什么 在 Github
  • 将 axios POST 请求与 moxios 匹配

    是否可以使用 moxios 模拟对 POST 请求的回复 不仅通过 URL 匹配 还通过 POST 正文匹配 事后检查尸体对我来说也很有用 这就是我现在正在做的事情 据我所知 没有特定于方法的存根方法 describe createCode
  • Axios 未传递 Content-Type 标头

    我在后端运行一个 Odoo 实例 并创建了一个公开 Web 控制器的自定义模块 如下所示 网页控制器 coding utf 8 from odoo import http import odoo from odoo http import
  • 如何对 axios 响应拦截器进行自定义错误代码检查?

    我在我的应用程序中使用 graphql 它错误地发送以下响应 您可能已经注意到 graphql 将所有错误作为状态代码 200 发送 我从 API 返回的错误位于data errors data errors message Error T
  • 即使使用 withCredentials:true,Axios 也不发送 cookie 数据

    尝试使用 React 和 Express 发出请求并发送 cookie 请求 响应工作正常 但 cookie 并未发送 在客户端 import axios from axios let endPoint http 192 168 1 135
  • Laravel 密室获得 401 授权

    我正在使用 Laravel Sanctum 和 Vuejs SPA 两者都驻留在同一顶级域中 Laravel backend app demo localhost Vue SPA app spa demo localhost 当使用 axi
  • axios默认超时是多少

    我在文档中找到了设置超时值的步骤 const instance axios create baseURL https some domain com api timeout 1000 headers X Custom Header foob
  • 知道axios中是否有待处理的请求

    我是 ReactJS 的新手 对于我的 ajax 调用 我尝试使用Axios https github com mzabriskie axios图书馆 太棒了 但现在我想知道是否有办法知道 axios 拦截器中是否有待处理的请求 因为我想显
  • Axios 和 VueJS,函数(响应)未设置列表

    我有一个请求获取一些数据并将其添加到变量中 当我使用时 then function response this persons response data 它不分配response data to this persons但是当我执行以下操
  • 如何从后端路由内的第三方API获取?

    尝试从第三方 url 获取 JSON 数据并将其带到我的后端路由 首先 我将查询字符串输入到应用程序的 url 中 并将它们存储到变量中 并在第三方 url 中使用它 尽管来自应用程序 url 的查询字符串已正确存储 但第二个和第三个查询字
  • 代理错误:无法将请求 /auth/register 从 localhost:3000 代理到 http://localhost:8800/api/

    注册 jsx import React from react import useState from react import Link from react router dom import axios from axios cons
  • 从vue中的api加载路由

    我正在尝试从我的 API 在 Vue 应用程序中加载路由 我尝试将数据推送到路由变量并使用 addRoutes 方法 但没有运气 我认为异步可能存在问题 但为什么 addRoutes 不起作用 这是我的代码 import Vue from
  • 我们可以使用 axios 的 onDownloadProgress 来加载 API 吗?

    我需要使用 axios 创建一个用于在 React 项目中加载 API 的进度条 我为此发现了 onDownloadProgress 函数 但我不知道我们是否可以使用它来获取诸如加载百分比之类的信息 或者它是否仅用于文件下载 所以我不确定我
  • REACT NATIVE 从本地 MySQL 数据库检索数据

    我正在用 React Native 编写一个应用程序 并且创建了一个 MySQL 数据库来存储我的信息 但我想知道是否可以使用 axios 或 fetch 与我的数据库交互 因为它是本地的并且没有 HTTP 地址然而 我觉得我以前能够做到这

随机推荐

  • 树莓派嵌入式Linux系统

    一 assert xff08 断言 xff09 C 标准库的 assert h头文件提供了一个名为 assert 的宏 xff0c 它可用于验证程序做出的假设 xff0c 并在假设为假时输出诊断消息 已定义的宏 assert 指向另一个宏
  • python range的逆序输出

    range的逆序输出的两种方式 xff1a 1 使用range里的步长参数 step xff0c step为负值即代表反向输出 range begin end step range begin end 1 表示逆序 xff0c 范围为 xf
  • 树莓派无网线无显示器远程连接vnc

    配置wifi连接 方法非常简单 xff0c 首先在SD卡的根目录下添加一个名为 wpa supplicant conf的文件 xff0c 然后在该文件内添加以下的内容 xff1a ctrl interface span class toke
  • gazebo常见问题(1)

    项目场景 xff1a 用gazebo进行仿真 遇到问题ModelDatabase cc 340 问题描述 出现报错 Wrn ModelDatabase cc 340 Getting models from http gazebosim or
  • html调用php变量

    https jingyan baidu com article d45ad1485da89469552b80a5 html
  • 树莓派中python文件开机自启动方法

    1 打开cd etc rc local 2 在exit 0 前输入sudo python3 home pi test py amp 注意 xff1a python3路径取决于你的python路径 xff0c 比如我的是usr bin pyt
  • 宝塔npm警告:npm WARN config init.module Use `--init-module` instead.

    蓝奏云分享部分地区无法访问需手动修改www lanzous com变为 www lanzoux com gt Linux gt 宝塔npm警告 npm WARN config init module Use 96 init module 9
  • pyinstaller打包后找不到.pyc文件,例如:FileNotFoundError: [WinError 3] 系统找不到指定的路径。: ‘C:\\xx\\torch_utils.pyc‘

    使用pyinstaller打包python项目后 xff0c 运行dist里的 exe文件 xff0c 提示如下错误 说找不到utils文件夹里的torch utils pyc 原因分析 xff1a 我查看到项目里面有utils这个文件夹
  • Django中上传图片后,获得图片的网站的访问地址

    在Django中 xff0c 您可以通过使用Django自带的MEDIA URL和MEDIA ROOT设置来访问存储在media目录中的图像 这些设置定义了您的媒体文件的URL和文件系统路径 要访问存储在media images目录中的图像
  • 关于树莓派rc.local开机自启python文件失败的问题

    当我们在使用树莓派的rc local进行开机自启python文件时 xff0c 常常不能成功 xff0c 其中有一个原因 xff0c 特别常见 当我们查询rc local服务运行日志时 xff1a sudo systemctl status
  • 什么是串口通信协议

    ARM体系结构 串口通信 一 什么是串口通信 1 串口通信属于基层基本性的通信规约 xff0c 收发双方事先规定好通信参数 2 它自己本身不会去协商通信参数 xff0c 需要通信前通信双方事先约定好通信参数来进行通信 3 因此 xff0c
  • 利用MQTT协议与阿里云数据交互的python程序

    利用MQTT协议与阿里云数据交互的python程序 设计目的功能要求和关键问题环境配置问题本地程序如何连接云上设备云上的数据交互问题界面设计问题 阿里云相关操作本地程序 设计目的 设计开发一个py应用程序 xff0c 实现对阿里云数据的双向
  • 中文分词:隐马尔可夫-维特比算法(HMM-Viterbi)附源码

    目录 0 先验知识 1 什么是中文分词 2 数据集的构造 3 训练及预测过程简述 4 训练阶段 xff1a 统计隐马尔可夫模型的参数 5 预测阶段 xff1a 应用 Viterbi 算法 6 完整的 Python 实现代码 0 先验知识 有
  • python学习day1

    打印字 print haha 注释符 单行注释符 xxx 多行注释符 xxx xxx 34 34 定义变量 a 61 10 定义数字 b 61 haha ni hao 定义字符串 print a print b 赋值 b 61 a 用户交互
  • 系统学习-----firewalld概述

    动态防火墙后台服务程序 xff1a 提供一个动态管理的防火墙 xff0c 用以支持网络 Zone xff0c 来分配对一个网络链接和界面一定程序的信息 xff0c 它具备对IPv4和Ipv6防火墙设置的支持 它支持以太网桥 xff0c 并有
  • 系统学习----DHCP服务原理

    文章目录 DHCPDHCP优点DHCP相关概念DHCP租约更新DHCP运行过程 DHCP DHCP xff1a 动态主机设置协议 xff0c 是一个局域网协议 xff0c 使用UDP协议工作 主要有两个用途 xff1a 用于局域网或网络服务
  • 区块链技术及应用---区块链技术(一)

    文章目录 第一章 疯狂的比特币及其原理机制1 1 比特币诞生1 2 疯狂的比特币1 2 1 疯狂的价格1 2 2 疯狂的矿机和芯片 1 3 通俗地讲比特币机制1 4比特币交易1 5 比特币挖矿1 5 1 数学难题1 5 2 矿池原理 1 6
  • OpenFlow协议是什么

    为什么学习OpenFlow xff1f 实践SDN的首选主流南向接口协议P4和PISA的前身 OpenFlow起源 Ethane项目是OpenFlow的前身 集中式 主动式 xff0c 基于Flow控制2008年的Open Flow论文最初
  • OpenDaylight(ODL)学习笔记

    什么是OpenDaylight xff1f OpenDaylight是SDN开发及运行的一个平台 OpenDaylight架构特点 基于OSGi的模块化设计多南向协议 OpenFlow xff0c Netconf xff0c OVSDB 模
  • Vue / axios / props 调用后端接口数据并渲染到页面

    情景介绍 给了一个可视化大屏的代码 xff0c 代码上写的是假数据 现在要调用后端接口获取数据 xff0c 并将其渲染到页面上 分析问题 给的代码是一个 vue 组件嵌套一个子组件 xff0c 要把数据渲染到子组件上 要调用后端接口 xff