taro(小程序一样) ScrollView 滚动到底部或者顶部 再次设置scrollIntoView 无效

这篇具有很好参考价值的文章主要介绍了taro(小程序一样) ScrollView 滚动到底部或者顶部 再次设置scrollIntoView 无效。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

产生这个bug的原因:当我们第一次滑倒底部点击A回到顶部成功,再次滑倒底部,再次点击A无法回到顶部,因为此时的scrollIntoView 对应的值还是A,需要将scrollIntoView对应的值清空,然后重新赋值A,即可解决

解决办法:滑动到顶部或者底部时,清空之前设置的scrollIntoId即可

onScrollToUpper={() => this.cleanScrollIntoId()}
onScrollToLower={() => this.cleanScrollIntoId()}

// 清除scrollIntoId
  cleanScrollIntoId() {
    this.setState({
      scrollIntoId: ""
    });
  }

完整代码:文章来源地址https://www.toymoban.com/news/detail-507364.html

 const citys = [
        {
          name: "A",
          list: [
            {
              cityCode: "320001",
              cityName: "阿坝"
            },
            {
              cityCode: "320002",
              cityName: "阿拉善"
            },
            {
              cityCode: "320003",
              cityName: "阿里"
            },
            {
              cityCode: "320004",
              cityName: "安康"
            }
          ]
        },

        {
          name: "B",
          list: [
            {
              cityCode: "130600",
              cityName: "保定市"
            }
          ]
        },
        {
          name: "C",
          list: [
            {
              cityCode: "130800",
              cityName: "承德市"
            }
          ]
        },
        {
          name: "H",
          list: [
            {
              cityCode: "131100",
              cityName: "衡水市"
            },
            {
              cityCode: "320800",
              cityName: "淮安市"
            }
          ]
        },
        {
          name: "M",
          list: [
            {
              cityCode: "231000",
              cityName: "牡丹江市"
            }
          ]
        },
        {
          name: "N",
          list: [
            {
              cityCode: "320100",
              cityName: "南京市"
            }
          ]
        },
        {
          name: "Q",
          list: [
            {
              cityCode: "130300",
              cityName: "秦皇岛市"
            }
          ]
        }, {
          name: "S",
          list: [
            {
              cityCode: "310000",
              cityName: "上海市"
            },
            {
              cityCode: "130100",
              cityName: "石家庄市"
            },
            {
              cityCode: "320500",
              cityName: "苏州市"
            }
          ]
        },
        {
          name: "T",
          list: [
            {
              cityCode: "140100",
              cityName: "太原市"
            },
            {
              cityCode: "130200",
              cityName: "唐山市"
            }
          ]
        },
        {
          name: "W",
          list: [
            {
              cityCode: "150300",
              cityName: "乌海市"
            }
          ]
        },
        {
          name: "X",
          list: [
            {
              cityCode: "320300",
              cityName: "徐州市"
            }
          ]
        },
        {
          name: "Y",
          list: [
            {
              cityCode: "320900",
              cityName: "盐城市"
            },
            {
              cityCode: "321000",
              cityName: "扬州市"
            },
            {
              cityCode: "140300",
              cityName: "阳泉市"
            }
          ]
        },
        {
          name: "Z",
          list: [
            {
              cityCode: "140400",
              cityName: "长治市"
            },
            {
              cityCode: "321100",
              cityName: "镇江市"
            }
          ]
        }
      ]


 /**
   * 右侧字母索引的触发
   */
  touchstartfn(e) {
    var index = e.target.dataset.bigindex;
    var letter = this.state.citys[index].name;
    this.setState({
      scrollIntoId: letter
    });

    Taro.showToast({
      icon: "none",
      title: letter
    });
  }


// 清除scrollIntoId
  cleanScrollIntoId() {
    this.setState({
      scrollIntoId: ""
    });
  }



// 示例
<ScrollView
          class="flex-left"
          scrollY="true"
          scrollIntoView={scrollIntoId}
          scrollWithAnimation
          onScrollToUpper={() => this.cleanScrollIntoId()}
          onScrollToLower={() => this.cleanScrollIntoId()}
        >
          {citys.map((i, index) => {  
            return (
              <View
                key={index}
                class="city-list"
                onClick={e => this.selectCity(e)}  // 这个不重要可以不管
              >
                <View
                  class="item-title item-a"
                  id={i.name}
                  data-bigindex={index}
                >
                  {i.name} // 这里显示的城市name 如 A
                </View>

                {i.list.map((j, o) => { // 这里显示的城名字 如:北京
                  return (
                    <View class="item" data-bigindex={index}>
                      {j.cityName}
                    </View>
                  );
                })}
              </View>
            );
          })}

// 这里是右侧字母
 {citys.map((item, idx) => {
            return (
              <View onClick={e => this.touchstartfn(e)}>
                <View
                  class="scroll_list_chi"
                  data-id={item.name}
                  data-index={idx}
                  data-bigindex={idx}
                >
                  {item.name}
                </View>
              </View>
            );
          })}

到了这里,关于taro(小程序一样) ScrollView 滚动到底部或者顶部 再次设置scrollIntoView 无效的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Uniapp或者微信小程序如何动态的计算Scrollview的高度

    当一个小程序页面,顶部有搜索栏,或者分类查询时,我们想要保证它们能固定到顶部,就需要使用到Scrollview,那么如何确定Scrollview就是一个问题,这时我们可以使用以下代码来实现 先获取Scrollview距离顶部的高度,然后页面高度减去顶部距离,就能得到剩余的内容高度,如

    2024年02月11日
    浏览(34)
  • 【小程序】scrollview制作tab导航栏,点击tab自动滚动到指定位置

    前几天遇到一个需求,做一个答题的界面,顶部是题目编号列表,下面是题目,点击题目编号跳转到相应题目。一开始想用vant weapp中的Tab标签页组件来做,也试着用过,中间遇到了某些问题效果不太理想。具体我也忘了啥问题。最后还是用scroll-view+swiper来实现了这一个功能。

    2024年03月22日
    浏览(58)
  • 微信小程序自定义顶部导航,滚动页面顶部导航颜色渐变

    微信小程序自定义顶部导航栏,使背景图置顶;当向上滚动页面时,实现顶部导航颜色渐变 实现方法 代码如下(示例): 提示:由于不同的手机机型顶部导航高度不一样,所有要获取手机的信息 总共三步: 1、初始化获取顶部导航信息 2、顶部导航文字上方通过view占位,同

    2024年02月11日
    浏览(55)
  • 微信小程序 顶部搜索 吸顶 不随页面滚动而滚动

    主要用于商城类小程序: 微信小程序 搜索框 顶部吸顶 顶部购物车栏固定 不随页面滚动而滚动 示例: 可以看到分为三部分--头部搜索框--中间商品区域(可滚动)----底部购物车(固定底部) 头部搜索框 最大的盒子宽高100% 头部盒子需要有固定高度 flex布局 flex-flow: column; (为了中间

    2024年02月12日
    浏览(56)
  • 微信小程序自定义顶部导航栏的胶囊和微信自带的胶囊一样的透明背景色

    想要实现微信自带的右上角胶囊背景透明很简单,只需要在pages.js里面设置下面配置就可以了: 但是设置完这个后,胶囊的背景色是那种黑色半透明的效果:(微信开发者工具和真机上显示的效果不一致,要以真机为准) 手机端的效果:所以还是要以手机端为准   左侧的返

    2024年02月01日
    浏览(41)
  • 小程序scroll-view组件纵向滚动返回顶部

    当开发分类页面时,常见的效果如下: 当左侧一级分类被选择之后,右侧的二级分类向下滚动后,再次点击左侧一级分类进行分类切换,二级分类应该立刻恢复到顶部。 首先,界面滚动的效果可以利用小程序中的 scroll-view 组件来实现,例如: 在确定了基本的布局后,就可以

    2024年02月11日
    浏览(68)
  • 2022-11 CSS:flex布局父子宽度问题-小程序scrollView-div横向滚动字体超出隐藏-居中

    如上图第二行子元素宽度会跟随第一行宽度 解决方案: 对第二行设置: width: max-content; 使其宽度跟随自身内容 如上图,左侧宽高为112rpx,宽度不生效 解决方案: 对左侧图片设置宽高的同时, 设置最小宽高 效果如下: 例1:

    2024年02月09日
    浏览(59)
  • uni-app小程序中做页面滚动底部或顶部加载效果

    在移动应用开发中,无限滚动加载是一个常见的功能,用户可以通过滑动屏幕来加载更多的内容,从而提高应用的用户体验。本文将介绍如何使用Uniapp实现无限滚动加载的功能。 概述 我们需要实现的无限滚动加载功能的具体效果如下: 当用户滑动到底部时,自动加载更多的

    2024年02月08日
    浏览(76)
  • 微信小程序 滚动到底部加载新的数据 之后滚动到顶部

    1.配置到底部监听 在app.json的window里面加入 里面的300表示距离底部300rpx触发onReachBottom事件 默认50rpx 2.在数据列表的js页面

    2024年02月12日
    浏览(40)
  • 监听uniapp小程序页面滚动到底部实现数据加载

    使用微信小程序自带的生命周期事件:onReachBottom,可以监听到页面滚动到底部的时候。 修改获取数据的分页页数,配和uniapp组件加载更多,就可以实现下拉加载刷新的过程。 下面是示例 1.在data中初始化分页的页数  2.在监听到页面滚动到底部时,修改页数,调用获取数组的

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包