Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

InfiniteScroll 添加手动加载更多 #4340

Closed
1 task done
zcrkey opened this issue Nov 8, 2021 · 6 comments
Closed
1 task done

InfiniteScroll 添加手动加载更多 #4340

zcrkey opened this issue Nov 8, 2021 · 6 comments
Labels

Comments

@zcrkey
Copy link

zcrkey commented Nov 8, 2021

Version of antd-mobile

5.0.0-beta.24

What is this feature about?

1、使用 InfiniteScroll 组件,页面在首次加载的就会触发loadMore方法,按道理这个时候页面没有滚动,不会触发的才对(首次加载数据应该由开发者自己去获取)
2、当页面上已经有加载多条数据(有滚动条的情况 下),其他操作去更新列表数据的时候(例如用户点击搜索按钮),就会触发到oadMore方法,按道理不是用户触发其他的操作,应该由开发者自己去处理数据就好,而不是自动去触发oadMore方法

综上,还是建议有一个可以上拉加载更多的功能,类似 PullToRefresh 组件一样的效果

Code of Conduct

  • I agree to follow this project's Code of Conduct
@zcrkey zcrkey added the feature label Nov 8, 2021
@awmleer
Copy link
Member

awmleer commented Nov 8, 2021

使用 InfiniteScroll 组件,页面在首次加载的就会触发loadMore方法,按道理这个时候页面没有滚动,不会触发的才对(首次加载数据应该由开发者自己去获取)

你可以把 InfiniteScroll 理解为一个无情的数据加载机器人,它唯一的指责就是判断当前页面是不是被填充了足够多的内容,如果没有,就继续调用 loadMore 加载数据,除非内容已经被全部加载完了。如果你想让页面首次加载的时候不触发 loadMore,我觉得应该是不去渲染 InfiniteScroll 组件。当然,其实我不是特别理解你的使用场景,所以如果可以提供一个 demo 的话,会更方便我们沟通,不然太泛泛了。

@awmleer
Copy link
Member

awmleer commented Nov 8, 2021

当页面上已经有加载多条数据(有滚动条的情况 下),其他操作去更新列表数据的时候(例如用户点击搜索按钮),就会触发到oadMore方法,按道理不是用户触发其他的操作,应该由开发者自己去处理数据就好,而不是自动去触发oadMore方法

这一点上,我大概理解你的应用场景,不过我觉得应该是这样来实现:当用户重新触发了搜索时,应该通过 key 来让子组件完全销毁并重新创建,而不是非常繁琐且不可靠的去对组件状态进行 patch。
同理哈,这里也是最好能提供一个 codesandbox 上的 demo。

还是建议有一个可以上拉加载更多的功能,类似 PullToRefresh 组件一样的效果

这个我还是不太理解你的意思,最好可以具体一点?

@awmleer
Copy link
Member

awmleer commented Nov 8, 2021

issue 先 close 了哈,不过有问题的话我们还是继续在这里沟通的

@awmleer awmleer closed this as completed Nov 8, 2021
@zcrkey
Copy link
Author

zcrkey commented Nov 9, 2021

您好,我在 codesandbox 上的写了一个demo,地址是:https://codesandbox.io/s/lucid-wright-itko5?file=/src/test.js
当页面上已经有加载多条数据(有滚动条的情况 下),在搜索框内输入数据,回车,这个时候就会触发到oadMore方法,按道理用户触发了其他的操作,应该由开发者自己去处理数据就好,而不是自动去触发oadMore方法

@awmleer
Copy link
Member

awmleer commented Nov 10, 2021

我去你这个 codesandbox 里试了一下,搜索的时候并没有进入到 loadMoredebugger 断点啊

@ycshill
Copy link

ycshill commented Aug 9, 2024

使用 InfiniteScroll 组件,页面在首次加载的就会触发loadMore方法,按道理这个时候页面没有滚动,不会触发的才对(首次加载数据应该由开发者自己去获取)

你可以把 InfiniteScroll 理解为一个无情的数据加载机器人,它唯一的指责就是判断当前页面是不是被填充了足够多的内容,如果没有,就继续调用 loadMore 加载数据,除非内容已经被全部加载完了。如果你想让页面首次加载的时候不触发 loadMore,我觉得应该是不去渲染 InfiniteScroll 组件。当然,其实我不是特别理解你的使用场景,所以如果可以提供一个 demo 的话,会更方便我们沟通,不然太泛泛了。

我也觉得不应该在每次渲染的时候就check ,毕竟我们使用这个组件只是想用上滑加载更多的功能。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants