前端如何更好处理后端接口的数据

本文使用到了部分ES6的知识

假设接口如下

const getImoocCourseList = function() {
    // ajax
    return {
        status: true,
        msg: '获取成功',
        data: [{
            id: 1,
            title: 'Vue 入门',
            date: 'xxxx-01-09'
        }, {
            id: 2,
            title: 'ES6 入门',
            date: 'xxxx-01-10'
        }, {
            id: 3,
            title: 'React入门',
            date: 'xxxx-01-11'
        }]
    }
};

 1.首先通过ES6中的解构赋值从中提取数据,使用的ES6的好处在于ES6对象的解构赋值是不需要按顺序对应的,变量必须与属性同名,就能取到正确的值。

const { data: listData, status, msg } = getImoocCourseList();

 为此引用下阮一峰大神的ES6入门中的介绍

let { bar, foo } = { foo: 'aaa', bar: 'bbb' };
foo // "aaa"
bar // "bbb"

let { baz } = { foo: 'aaa', bar: 'bbb' };
baz // undefined

上面代码的第一个例子,等号左边的两个变量的次序,与等号右边两个同名属性的次序不一致,但是对取值完全没有影响。第二个例子的变量没有对应的同名属性,导致取不到值,最后等于undefined。 

 

2.通过push方法插入数据进行展示,使用ES6模板字符串能够不再使用字符串连接的形式,有效避免使用连接时出现的问题。在

function foo(val) {
    return val.replace('xxxx', 'xoxo');
}

if (status) {
    let arr = [];

    listData.forEach(function({ date, title }) {

        // arr.push(
        //     '<li>\
        //         <span>' + title + '</span>' +
        //         '<span>' + date + '</span>' +
        //     '</li>'
        // );

//注意push方法中出入代码端的方式用到了ES6中的模板字符串

        arr.push(
            `
                <li>
                    <span>${ `课程名: ${ title }` }</span>
                    <span>${ foo(date) }</span>
                </li>
            `
        );

    });

    let ul = document.createElement('ul');
    ul.innerHTML = arr.join('');

    document.body.appendChild(ul);

} else {
    alert(msg);
}

下面是HTML文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script src="./main.js"></script>
</body>
</html>

个人在学习ES6,如果有什么需要订正的地方欢迎大家留言。祝大家新年快乐,工作顺利。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可能是因为您没有正确地将后端接口返回的数据绑定到 Vue3 实例的数据属性上。在 Vue3 中,您可以使用 `setup()` 函数来初始化 Vue3 实例的数据属性和方法,例如: ```javascript import { reactive } from 'vue' export default { setup() { const state = reactive({ searchData: [] }) const search = async (keyword) => { const res = await fetch(`/api/search?keyword=${keyword}`) const data = await res.json() state.searchData = data } return { state, search } } } ``` 在这个例子中,我们使用 `reactive()` 函数创建了一个响应式的 `state` 对象,并将其返回到 Vue3 实例中。我们还定义了一个 `search()` 方法来从后端接口获取数据,并将数据赋值给 `state.searchData` 属性。在模板中,您可以使用 `state.searchData` 属性来渲染搜索结果: ```html <template> <div> <input type="text" v-model="keyword" /> <button @click="search(keyword)">Search</button> <ul> <li v-for="item in state.searchData" :key="item.id">{{ item.title }}</li> </ul> </div> </template> ``` 这样,当用户在搜索框中输入关键词并点击搜索按钮时,Vue3 实例会调用 `search()` 方法,获取后端接口数据并将其赋值给 `state.searchData` 属性。模板中的 `v-for` 指令将遍历 `state.searchData` 数组,并将每个元素的 `title` 属性渲染为一个列表项。如果您仍然遇到问题,请提供多的细节和代码示例,以便好地帮助您解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值