美文网首页
费点时间

费点时间

作者: chenjieyi | 来源:发表于2022-07-05 17:57 被阅读0次

一、移动端标签页(每个标签里都是一个长列表)滚动至顶切换

当第一个标签的长列表加载了很多数据,滚动条已经滚动到很底部了,这个时候直接切换到第二个标签的长列表时,会自动触发加载分页数据一直到相应的滚动条高度的数据。解决这个问题就是在切换标签前先滚动到顶部再切换标签。

页面里有组件Tabs
index.tsx 页面

import React, { useRef } from 'react';
import Tabs from './Tabs'

const Index = () => {
  const scrollTop = () => {
      if (parentRef?.current) {
        parentRef.current.scrollTop = 0;
      }
    };

  return (
    <div className="app2-wrapper" ref={parentRef}>
      <Tabs scrollTop={scrollTop}  />
    </div>
  );
}

Tabs.tsx组件

import React, { useRef, useState, useEffect } from 'react';
import { Tabs as AMTabs } from 'antd-mobile';

import './index.less';

export interface TabsProps {
  scrollTop?: () => void;
}

const Tabs: React.FC<TabsProps> = ({  scrollTop }) => {
  const [activeKey, setActiveKey] = useState<string | undefined>(0);
 
  const onChangeActiveKey = (key: string) => {
    scrollTop?.();
    setTimeout(() => {
      setActiveKey(key);
    }, 0);
  };


  return (
    <AMTabs className="app-tabs-wrapper" activeKey={activeKey} onChange={onChangeActiveKey}>
     <AMTabs.Tab key={0} title={"tab1"} forceRender={true}>tab1</AMTabs.Tab >
     <AMTabs.Tab key={1} title={"tab1"} forceRender={true}>tab2</AMTabs.Tab >
    </AMTabs>
  );
};

export default Tabs;

移动端标签页(每个标签里都是一个长列表)每个标签的长列表可无限加载(向下滚动分页加载)

切换标签后的长列表向下滚动分页加载出现问题,为了解决这一问题,在每个标签的长列表组件里传入一个visible用于无限加载组件的显示/隐藏。只有当前标签的无限加载组件可显示使用(无限加载组件:antd-mobile v5的InfiniteScroll)

现有页面index.tsx 内有Tabs组件

import React, { useRef } from 'react';
import Tabs from './Tabs'

const Index = () => {
  const scrollTop = () => {
      if (parentRef?.current) {
        parentRef.current.scrollTop = 0;
      }
    };

  return (
    <div className="app2-wrapper" ref={parentRef}>
      <Tabs scrollTop={scrollTop}  />
    </div>
  );
}

Tabs.tsx组件

import React, { useRef, useState, useEffect } from 'react';
import { Tabs as AMTabs, InfiniteScroll } from 'antd-mobile';

import './index.less';

export interface TabsProps {
  scrollTop?: () => void;
}

const Tabs: React.FC<TabsProps> = ({  scrollTop }) => {
  const [activeKey, setActiveKey] = useState<string | undefined>(0);
 
  const onChangeActiveKey = (key: string) => {
    scrollTop?.();
    setTimeout(() => {
      setActiveKey(key);
    }, 0);
  };


  return (
    <AMTabs className="app-tabs-wrapper" activeKey={activeKey} onChange={onChangeActiveKey}>
     <AMTabs.Tab key={0} title={"tab1"} forceRender={true}>tab1{activeKey == 0 && <InfiniteScroll />}</AMTabs.Tab >
     <AMTabs.Tab key={1} title={"tab1"} forceRender={true}>tab2{activeKey == 0 && <InfiniteScroll />}</AMTabs.Tab >
    </AMTabs>
  );
};

export default Tabs;

相关文章

  • 费点时间

    一、移动端标签页(每个标签里都是一个长列表)滚动至顶切换 当第一个标签的长列表加载了很多数据,滚动条已经滚动到很底...

  • 时间管理学习2

    了解自己的时间消耗构成 如何找:用工具记录自己的时间构成,分析发现“浪费点”,把浪费点变得不浪费,就把时间找回来了...

  • 浪费点时间,取悦自己

    越小的孩子,越容易快乐。一个微笑或拥抱,一句夸赞或表扬,足以让他们开心。因为孩子单纯,易于满足。他们基本上想到的就...

  • 插画练习~橙子

    写实风的橙子 其实不难 就是费点时间而已

  • 自制宝宝健康零食,无添加剂、防腐剂的奶香小馒头

    在家制作零食,其实很简单,就是费点时间费点功夫,无外乎就是牺牲了追剧时间和睡觉时间。 重点是自己做的小零食,安全,...

  • 喜欢的文章

    爱尔兰歌谣 动用时间去工作——这是成功的代价; 费点时间去思考——这是力量的源泉; 花点时间...

  • 嘿,我想跟你浪费点时间

    01 前两天,一个好久不见的,算是我职场上第一个“师傅”的姐姐来找我,原因是她看到我拿着一份稳定的工资,没有主动去...

  • 单身时也得浪费点时间

    很多时候,单身的确会让我们活得充实,不过,假如你觉得生活总是忙碌或者不敢浪费一点时间,那就惨了;因为在快节奏的紧张...

  • 付费点评

    支付简书贝150个,即点评散文小说一篇(三千字内) ,并交流。 本帖留言自己的文章标题即可。

  • 费点脑细胞

    这篇,为了应付日更。 突然发现连应付日更都想不出哪怕一点点的内容了,不是词穷,是脑袋空了。 我打开了电脑,电脑也很...

网友评论

      本文标题:费点时间

      本文链接:https://www.haomeiwen.com/subject/hlwsbrtx.html