发布于2021-05-30 12:15 阅读(818) 评论(0) 点赞(13) 收藏(2)
// 用于渲染每一行列表模板
let { listData } = this.state
// 更加当前行的索引获取对应数据
let itemData = listData[index]
if (!itemData) {
return (
<div style={style} key={key}>
<p className={styles.loading}></p>
</div>
)
}
.loading {
height: 120px;
background-color: #f6f5f6;
}
this.state = {
// 判断当前是否加载成功
isFinished: true
}
// 0表示不会自动关闭
Toast.loading('加载中', 0)
this.setState({
isLoadFinish: false
})
// 获取接口数据后
Toast.hide()
const { total, isFinished } = this.state
{isFinished && total === 0 && <NoHouse>没有找到相应房源</NoHouse>}
// 这种方式不好使???
// onTitleClick
this.bodyDOM.className = 'scrollAuto'
// onCancel onSave
this.bodyDOM.className = ''
// componentDidMount
this.bodyDOM = window.document.body
.picker {
position: fixed;
width: 100%;
background-color: #fff;
}
<div class={styles.picker}>
{/* 选择器组件: */}
<PickerView />
{/* 底部按钮 */}
<FilterFooter />
</div>
滚动效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TMH6zqlG-1621910559450)(C:\Users\Administrator\Desktop\react\react项目-移动端\3.0列表找房\image\滚动条吸顶处理.jpg)]
封装 Sticky 组件,实现吸顶功能。
在 find 页面中,导入 Sticky 组件。
使用 Sticky 组件包裹要实现吸顶功能的 Filter 组件。
在 Sticky 组件中,创建两个 ref 对象(placeholder、content),分别指向占位元素和内容元素。
组件中,监听浏览器的 scroll 事件(注意销毁事件)。
在 scroll 事件中,通过 getBoundingClientRect() 方法得到筛选栏占位元素当前位置(top)。
判断 top 是否小于 0(是否在可视区内)。
如果小于,就添加需要吸顶样式(fixed),同时设置占位元素高度(与条件筛选栏高度相同)。
否则,就移除吸顶样式,同时让占位元素高度为 0。
handleScroll = () => {
// 监听窗口滚动
// 获取要操作的DOM元素
let placeholder = this.placeholder.current
let content = this.content.current
let { height } = this.props
// 获取占位元素到可视区顶部的距离
let { top } = placeholder.getBoundingClientRect()
if (top <= 0) {
// 吸顶:超出顶部边界,让筛选栏固定定位并且显示占位符
content.classList.add(styles.tofix)
placeholder.style.height = height + 'px'
} else {
// 不吸顶:筛选栏又回到边界之下,重置原来的状态
content.classList.remove(styles.tofix)
placeholder.style.height = '0px'
}
}
componentDidMount () {
// 监听页面的滚动事件
window.addEventListener('scroll', this.handleScroll)
}
componentWillUnmount () {
// 取消事件监听
window.removeEventListener('scroll', this.handleScroll)
}
<React.Fragment>
{/*占位符*/}
<div ref={this.placeholder}></div>
{/*内容组件*/}
<div ref={this.content}>{ this.props.children }</div>
</React.Fragment>
onSave = (value, type) => {
// 回到顶部
window.scrollTo(0, 0)
// 省略...
}
原文链接:https://blog.csdn.net/weixin_44867717/article/details/117250829
作者:大师兄
链接:http://www.qianduanheidong.com/blog/article/116105/f40b9fddab187fe3bb03/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!