android - 反应原生:滚动视图刷新控制拉刷新不从顶部刷新
问题描述
我使用滚动视图添加了拉动以刷新 Web 视图。它正在工作,但条件是只有当我们位于 Web 视图内的页面顶部时,拉动刷新才能工作。这是我的代码
<ScrollView
contentContainerStyle={{flex: 1}}
refreshControl={
<RefreshControl
refreshing={refreshing}
onRefresh={onRefresh}
/>
}
>
<WebView scalesPageToFit
startInLoadingState
ref = {webViewRef}
originWhitelist={['*']}
style={{ flex: 1 }} source={{ uri: url }} onLoadStart={() => (setLoading(true))} onLoadEnd={() => (setLoading(false))}
javaScriptEnabled={true}
domStorageEnabled={true}
setSupportMultipleWindows={false}
/>
</ScrollView>
解决方案
为 web 视图添加了 onScroll 方法并获得了 yOffset 并在此基础上添加了条件以重新加载网页/不
<WebView scalesPageToFit
startInLoadingState
ref = {webViewRef}
originWhitelist={['*']}
style={{ flex: 1 }} source={{ uri: url }} onLoadStart={() => (setLoading(true))} onLoadEnd={() => (setLoading(false))}
javaScriptEnabled={true}
domStorageEnabled={true}
setSupportMultipleWindows={false}
onScroll={handleScroll}
/>
和方法
const handleScroll = (event) => {
console.log(Number(event.nativeEvent.contentOffset.y))
const yOffset = Number(event.nativeEvent.contentOffset.y)
if (yOffset === 0){
console.log('top of the page')
handleRefresh(true)
}else{
handleRefresh(false)
}
}
推荐阅读
- r - 如何使用mapply将数据帧的每一行乘以R中另一个数据帧的行间隔
- reactjs - npm install 时 Mac 上的 inotify@1.4.6 平台不受支持
- kotlin - 从父母那里杀死孩子活动
- php - 一个人如何使用 curl 作为浏览器发出精确的 Web 请求 - 我被 Cloudflare 通过 curl 阻止,即使我觉得请求是相同的
- python - 如何在 Pycharm Pro 中为远程解释器“添加内容根”?
- python - Gunicorn 绑定 HTTP 和 HTTPS 端口
- eclipse - 在 Eclipse 中运行当前类主要方法的快捷方式?CTRL+F11 第一次不起作用
- d3.js - d3 相对于视口大小的缩放
- python - Tkinter 线程在 GUI 中使用更改页面
- firebase - Firestore,分页在网络上不起作用