苹果系统H5下拉加载事件重复触发(react hooks)

本文讲述了在iOS端的H5/小程序中,由于滚动到底部触发加载更多数据时出现重复加载问题。通过使用React的`useCallback`配合`debounce`实现防抖,但遇到闭包问题导致数据不完整。优化方案是引入新的state并监听其变化来触发`handleSearch`,确保每次正确加载数据。


问题描述

ios端手机下的h5/小程序,滚动到底部时加载更多数据,但是滚动到底部时重复触发加载事件,在安卓机下则不会发生该问题,记录一下解决方案。


解决思路

为了防止下拉事件重复触发,对下拉事件做一次防抖处理:

import {
   
    useState, useRef, useCallback } from 'react';
import debounce from 'lodash/debounce';

const paramPageRef = useRef(1)
const [searchResult, setSearchResult] = useState([]);


  // 防抖查询
  const debounceSearch = useCallback(
    debounce(() => handleSearch (), 300),
    [],
  );
  
 // 接口查询数据
 const handleSearch = async () => {
   
   
    const params = {
   
   
    	// 一些参数
      county: selectedArea.regionName,
      address: searchKey,
      ...stableParams,
      currentPage: paramPageRef.current,

    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值