相关文章推荐
酷酷的鸵鸟  ·  React中如何动态添加和删除元素_reac ...·  2 月前    · 
慷慨大方的薯片  ·  react ...·  4 周前    · 
潇洒的伤疤  ·  設定 CORS Proxy ...·  2 天前    · 
礼貌的汉堡包  ·  GPS定位详解——为什么无法收到定位成功的回 ...·  1 年前    · 
非常酷的冲锋衣  ·  C#在winform中操作数据库,实现数据增 ...·  1 年前    · 
刚失恋的炒面  ·  产生垂直滚动条和修改滚动条的样式兼容谷歌和火 ...·  1 年前    · 
爱看球的牙膏  ·  Java BigDecimal ...·  1 年前    · 
Code  ›  javascript - react在hash模式下不定位到指定id的div -
div 前端 hash react
https://segmentfault.com/q/1010000041315592
酒量小的水煮鱼
1 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. javascript
  4. 问答详情

react在hash模式下不定位到指定id的div

头像
唯见长江天际流
814 44 334 734
发布于
2022-01-20
更新于
2022-01-20

比如

<a href="#first" />
<div id="first" />

点击a的时候,路由是 http://xxx.com#first ,然后页面会滚动到id为first的页面。

现在用react的hash模式。路由应该是

http://xxx.com#demo?a=aaa&b=bbb#first

但是不会滚动到id为first的div,这种要怎么处理?

是不是因为react这种编译出的html没有dom元素,那这种要在虚拟dom这样的框架中怎么使用呢?

javascript react.js 前端
阅读 1.4k
2 个回答
得票 最新
头像
CodeSteppe
7.1k 8 18
发布于
2022-01-20

可以使用: React Router Hash Link 。

import { HashLink } from 'react-router-hash-link';
<HashLink to="/some/path#with-hash-fragment">Link to Hash Fragment</HashLink>

点击 HashLink 就可以跳转到相应的锚点,但是刷新页面不会直接跳到锚点。如果实在没法解决还是建议用 BrowserRouter 取代 HashRouter 。

头像
_usw
3.7k 4 10 36
发布于
2022-01-20

hash模式基于url中#的部分,通过hashChange来完成路由功能(当 URL 的片段标识符发生更改(URL 中以 # 符号开头和之后的部分)时,将触发 hashchange 事件。),相当于锚点的特性已经被占用了。如果需要滚动的话可能需要写一些逻辑进行控制滚动了,这就考验如何去query元素 ,如何去计算(scrollTop),如何做动效(rAf或者tween),要不要做节流,之类之类。整出来的话还挺考验技术的呢,动手感觉一下吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
  • 项目由多个人员(公司)开发,但是不想让他们互相看到彼此的代码,除了手动合并代码该怎么办?
    公司的系统由多个公司共同开发,但是领导考虑到git做分支会导致代码泄露,想寻求一个方法可以让各公司可以自己提交发布自己开发的部分。目前的方法是各个公司将代码写完后,由我统一手动合并发布,这样参与的公司越来越多,会导致忙不过来或者无法及时发布的问题。目前是一个公司开发一个模块就是一个仓库,每次其他公司...

    14 回答 14.3k 阅读

  • 纯前端的滑块验证有什么意义?
    现在登录很多都有滑块验证,但是发现,很多组件是纯前端的,不需要和服务端交互,那这个有啥意义呢?除了增加人登录麻烦,程序刷接口不是还是防不了吗,这不是为了做而做吗?

    7 回答 2.5k 阅读 ✓ 已解决

  • JS前端数字计算精度丢失问题,请问各位是怎么解决的?
    比如计算百分比,乘除法,js计算有小数点,精度会丢失,通过toFixed可以截取小数后几位,但是会四舍五入,而toPrecision则需要指定数字长度。现在要保留小数点后2位,请问怎么处理

    12 回答 4.9k 阅读 ✓ 已解决

  • 各位,帮忙写个正则吧?
    必须包括,字母,数字,下划线,长度20个字符以内

    16 回答 5.4k 阅读

  • 前端如何实现 js 中在两个浏览器tab 中如何实现实时通信呢?
    意思就是想要两个 tab页同时能获取到一个状态的更改。比如在 A 页面改的状态,在 B 页面也可以同时获取到

    9 回答 3k 阅读

  • 学习tailwind.css的必要性?
    现在有 CSS预处理器:less、scss等方案,这些方案基本上都可以简化 CSS 代码编写。现代CSS解决方案 tailwind.css 将 CSS 简化并书写到标签,这种书写方式与传统的CSS不同,最终呈现的效果是一样的。

    7 回答 3.6k 阅读 ✓ 已解决

  • 自增主键不会暴露数据吗?
    假如有一个get请求的接口,传的参数是id = 1这样子的,那么不是可以被用户拿到所有的数据了吗 {代码...} 像这种情况怎么处理呀如果这个情况的话,被别人调用了删除的接口不是很恐怖吗,因为删除接口也是传一个id过去后端就删除了

    10 回答 7.8k 阅读

宣传栏
产品
热门问答
热门博客
热门课程
最新活动
翻译
勋章
课程
Java 开发课程
PHP 开发课程
Python 开发课程
前端开发课程
移动开发课程
资源
每周精选
用户排行榜
帮助中心
建议反馈
合作
关于我们
广告投放
职位发布
讲师招募
联系我们
合作伙伴
关注
产品技术日志
社区运营日志
市场运营日志
团队日志
社区访谈
条款
服务协议
隐私政策
下载 App

Copyright © 2011- 2023 SegmentFault. 当前呈现版本 23.09.15

浙ICP备15005796号-2 浙公网安备33010602002000号 ICP 经营许可 浙B2-20201554

杭州堆栈科技有限公司版权所有

 
推荐文章
酷酷的鸵鸟  ·  React中如何动态添加和删除元素_react 动态添加组件
2 月前
慷慨大方的薯片  ·  react 实现点击其他地方,隐藏列表(点击元素外)_react 点击其他地方 弹窗隐藏
4 周前
潇洒的伤疤  ·  設定 CORS Proxy 伺服器以使用原生驗證管理 SPA 的標頭 - Microsoft identity platform | Microsoft Learn
2 天前
礼貌的汉堡包  ·  GPS定位详解——为什么无法收到定位成功的回调 - 掘金
1 年前
非常酷的冲锋衣  ·  C#在winform中操作数据库,实现数据增删改查_51CTO博客_数据库增删改查命令
1 年前
刚失恋的炒面  ·  产生垂直滚动条和修改滚动条的样式兼容谷歌和火狐-阿里云开发者社区
1 年前
爱看球的牙膏  ·  Java BigDecimal toString() 的转换和输出 -腾讯云开发者社区-腾讯云
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号