第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

前端分頁注意注意

標(biāo)簽:
JavaScript

分页对于一个前端程序员来说,真是太熟悉不过了;因为对于列表数据呈现,如果没有做分页处理,那就是不负责的表现,后端亦是如此。

借着刚进来慕课网,就来总结一下,关于分页的一些问题,大家来讨论一下。

相信大多数接到产品提分页需求时,基本都是满口答应的。的确,单单做一个分页展示真的不难,基于前后端分离开发方式下的分页,前后端只需要约定如下接口。

//上行参数
{
    data:{
        page:1,
        size:10
    }
}

//下行参数
{
    code:200,
    msg:'success',
    data:{
        count:100,
        list:[{}] //10个item
    }
}

剩下的事情就是前端去展示,分页组件线上也比较多,随便找一个就可以了,做完给产品一看。

嗯,不错,完美。

但是,这样就真的完了吗?

事实上并非如此,当我们的列表为空时,是否需要空数据 UI 显示?

当数据仅仅只有一页时,是否需要展示分页控件?Google 的搜索结果是仅有一页结果不显示分页控件。

当我们翻页到最后一页,然后删除数据时问题就显示出来了,最后一页就只有一条数据,当我点击删除按钮之后,发现页面空了,如果你无视这样的糟糕体验那就没有下文了。

我相信一个有信仰的产品或者一个有信仰的前端,是不会无视这样的体验的。对于上面的场景,前端可以稍微处理一下,删除时判断当前是否是最后一页,是否只有一天,删除操作之后页码-1即可。

但是,由此我想抛出一个分页数据同步的问题。这个问题在无限下拉分页的时候应该尤为突出。

当我们在客户端下拉加载的时候,此时数据库插入了一条新数据,不出意外的话,再次下拉将会出现一条重复的数据的,当我们删除一条数据库数据时,对应的就是会丢失一条数据,这个问题在某网站-XX都是产品经理 是没有处理的。

如果数据不会删除,仅新增,我们之前采用的方案是通过加时间戳的方式,也就是请求数据的时候,记下请求第一页时的时间戳,而后的请求都带上这个时间戳,后端在查询数据库的时候,过滤掉这个时间戳之后新增的数据即可。这样就不会有重复数据了。

如果数据可删除的,上面的方案可能无法彻底解决数据不一致的问题,勤劳智慧的后端给出的方案是,修改分页请求的 Api 协议。

//上行参数
{
    data:{
        lastId:0,
        size:10
    }
}

//下行参数
{
    code:200,
    msg:'success',
    data:{
        count:100,
        list:[{}] //10个item
    }
}

将我们的页码参数换成 最后一个数据的 id , 如果是第一页则传 0,后端此时取数据的时候,根据 id 往后取 10(一页)的 条数据,这样无论数据是被删除了还是新增了数据,都能够确保每页数据的一致性。

在前端的工作中,有很多的小细节,至于我们如何对待,仁者见仁,智者见智;以上,仅代表个人的思考,那你面对分页的问题是如何对待的呢?

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消